Langsung ke konten utama

[TUTORIAL] Bermain Benteng Takeshi di Laptop

Ingat dengan film Benteng Takeshi di TPI (sekarang jadi MNC TV) ? Rintangan di benteng takeshi sangatlah banyak. Nah disini kita akan membuat salah satu dari rintangan tersebut, nama rintanganny adalah "Sumur Tua".

Sebelum kita membuat game seperti itu, kita harus mengetahui dulu apa itu thread, apa itu IPC.


THREAD
thread adalah unit dasar dari utilitas CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack, dan juga saling berbagi dengan thread lain dalam proses yang sama.

Perbedaan antara thread dengan proses

Thread

  • Memiliki akses langsung ke segmen data dari prosesnya
  • Dapat saling berkomunikasi dengan thread lain dalam satu proses
  • Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat mempengaruhi tingkah laku thread lain dalam satu proses
Proses
  • Memiliki ruang / space sendiri di memori untuk menampung process image
  • Memiliki ruang alamat atau IP address masing-masing
  • Tidak dapat mengakses ruang lain di memori yang menjadi milik proses lainnya.

Keuntungan menggunakan thread
  • Waktu pembuatan yang lebih cepat
  • Waktu pemberhentian yang lebih cepat
  • Waktu pergantian antar thread lebih cepat daripada antar proses
  • Komunikasi antar thread lebih efisien

Thread sendiri dibagi menjadi 2, yaitu Single Threading dan Multi Threading.
  • Single threading adalah proses yang memiliki satu thread yang berjalan. Biasanaya fungsi thread ini digunakan sebagai pengendali jalannya proses.
  • Multi threading adalah proses yang memiliki lebih dari satu thread yang berjalan didalamnya, sehingga dalam hal ini, proses dapat menjalankan lebih dari satu tugas dalam satu waktu.

Oke, diatas ini adalah penjelasan secara garis besar tentang thread. Sekarang langsung saja kita coba implementasinya dengan membuat sebuah game sumur tua seperti pada film benteng takeshi.
  • Pertama, masuk ke dalam terminal
  • Lalu buat sebuah file baru, dengan nama terserah. Di sini saya contohkan dengan nama benteng_takeshi.c. Caranya ketikkan -> gedit benteng_takeshi.c
  • Lalu akan muncul sebuah layar kosong (seperti notepad pada windows). Lalu silahkan ketik seperti gambar dibawah ini.





  • Setelah selesai, save program tersebut
  • Lalu ketikkan gcc -o [nama_file_output] [nama_file_.c] -lpthread -lm. Di sini saya contohkan seperti -> gcc -o benteng_takeshi benteng_takeshi.c -lpthread -lm
  • Lalu ketikkan ./benteng_takeshi

Game sumur tua sudah jadi, kita akan memberikan beberapa invoasi - invoasi dengan game sumur tua tersebut. Salah satunya kita bisa menggunakan IPC.


IPC (Inter Process Communication)
IPC adalah komunikasi antar proses untuk mengirim data dari satu proses ke proses yang lain, baik antar proses dalam satu kompute rmaupun proses-proses dalam komputer yang berbeda. Jenis-jenis IPC ada 4, antara lain :
  • Pipes
  • Message Queue
  • Shared Memory
  • Socket


PIPES
Pipe merupakan komunikasi sekuensial antar proses yang saling terelasi, namun pipe memiliki kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan, dan komunikasinya yang dilakukan adalah secara sekuensial. Jika komunikasi yang diinginkan adalah komunikasi 2 arah, maka kita harus membuat dua pipe, karena sebuah pipe hanya bisa digunakan untuk komunikasi satu arah saja.

Pipe sendiri terbagi lagi menjadi 2, antara lain :
  • Named pipe
  • Unnamed pipe

Contoh kode program dari pipe

wirte.c

char *fifo = "/tmp/fifo/";
ind fd,arr[100];
fd = open(fifo,O_WRONLY);
write (fd,arr,sizeof(arr));
close(fd);
unlink(fifo);


read.c

char *fifo = "/tmp/fifo/";
int fd,arr[100];
fd = open(fifo,O_RDONLY);
read(fd,arr,sizeof(arr));
close(fd);

jalankan kedua program tersebut di terminal yang berbeda, dan lihat hasilnya


-- Penjelasan --
a) Deklarasi variabel
Variabel pertama bertype char pointer (char *fifo), dimana variabel fifo tersebut berisi lokasi yang akan digunakan untuk membuat file pipe, misal lokasinya adalah "/tmp/fifo/". Maka deklarasinya adalah :
char *fifo = "/tmp/fifo/";

Variabel kedua adalah variabel bertype integer yang akan digunakan untuk membuka file pipe tadi (int fd) dan juga variabel array of integer untuk ditulis ke dalam file pipe tersebut (arrp100]). Maka deklarasinya adalah:
int fd,arr[100];

b) Membuat file pipe
File pipe bisa dibuat melalui perintah mkfifo, dimana salah satu parameternya adalah 0666, yaitu menandakan bahwa file pipe tersebut bisa di read and write. Maka deklarasinya adalah :
mkfifo(fifo,0666);

c) Membuka file pipe
File pipe yang tadi telah kita buat kemudian dibuka dengan menggunakan perintah "open", lalu dimasukkan ke dalam variabel integer yang telah kita buat Parameter ke dua isikan dengan "O_WRONLY" yang dimaksudkan untuk file tersebut dibuka dengan dalam meode
fd = open(fifo,O_RDONLY);

d) Menuliskan isi file pipe
Menuliskan isi file pipe bisa menggunakan perintah "write"
write(fd,arr,sizeof(arr));

e) Menutup file pipe
Menutup file pipe bertujuan agar file pipe tersebut tidak akan diakses terus menerus. Menutup file pipe menggunakan perintah "close"
close (fd);

f) Menghapus file pipe
 Menghapus file pipe menggunakan perintah "unlink"
unlink(fifo);

Komentar

Postingan populer dari blog ini

Membuat KAK Perusahaan Ekspedisi

Kerangka Acuan Kerja Pengembangan Sistem Informasi Pengiriman Barang dan Tracking Armada GO - Logistik A. Latar Belakang Proses pengiriman barang oleh perusahaan ekspedisi merupkana proses bisnis yang paling penting saat ini. Hal ini sangat diperlukan karena dapat membantu masyarakat luas untuk menunjang bisnis atau kegiatan mereka. Maka dari itu banyak sekali pelaku bisnis yang menawarkan jasa tersebut.  Karena banyak sekali pelaku bisnis yang menawarkan jasa tersebut, perusahaan ekspedisi ini berusaha untuk memberikan fasilitas yang terbaik untuk pelanggannya, yaitu berupa aplikasi tracking lokasi arma pengiriman barang. Dengan adanya aplikasi ini, perusahaan dan pelanggan dapat memantau langsung proses ekspedisi tersebut. B. Maksud dan Tujuan Maksud dan tujuan dari aplikasi ini adalah untuk mempermudah pelanggan dalam mengetahui lokasi armada yang sedang melakukan proses ekspedisi tersebut, dan bertujuan untuk memberikan rasa percaya dan juga rasa aman lebih ...

MPPL - Pertemuan 1

MANAJEMEN PROYEK PERANGKAT LUNAK Perangkat Lunak (Software) Perangkat lunak atau software merupakan aplikasi yang terdiri dari sekumpulan kode atau instruksi, yang berisi data dan dokumentasi atau petunjuk manual untuk menyelesaikan suatu permasalahan. Proyek Proyek adalah suatu kegiatan yangn mempunyai batasan waktu (bersifat sementara), biaya dan resource untuk mencapai sebuah tujuan. Manajemen Manajemen adalah kegiatan mengatur, mengelola berupa perencanaan, pelaksanaan dan controlling. Dari tiga pengertian diatas maka dapat disimpulkan bahwa Manajemen Proyek Perangkat Lunak (MPPL) adalah aktivitas untuk perencanaan, pelaksanaan sampai pada tahap controlling terhadap pembuatan suatu perangkat lunak dengan menggunakan resource yang ada dalam jangka waktu tertentu untuk memenuhi kebutuhan guna menyelesaikan suatu permasalahan. Dalam MPPL, terdapat stakholder yang mempunyai peran masing-masing dalam manajemen proyek pernagkat lunak, yaitu: Proyek Merupakan suatu kegia...

[PWEB] Grocery CRUD

Untuk memudahkan user dalam membuat CRUD (Create Read Update Delete), dapat menggunakan grocery crud 1) Langkah pertama yaitu buka localhost/phpmyadmin dan buatlah sebuah database dan beserta tabelnya. Dibawah ini adalah contohnya 2) Lalu buka file grocery_crud pada text editor Anda (disini saya menggunakan Sublime). Buka di /application/config/database.php. Lalu ketik seperti dibawah ini <?php defined('BASEPATH') OR exit('No direct script access allowed'); /* | ------------------------------------------------------------------- | DATABASE CONNECTIVITY SETTINGS | ------------------------------------------------------------------- | This file will contain the settings needed to access your database. | | For complete instructions please consult the 'Database Connection' | page of the User Guide. | | ------------------------------------------------------------------- | EXPLANATION OF VARIABLES | ---------------...