Apa itu thread?
Thread adalah bagian kecil dari suatu proses.
a. Single Thread
Proses hanya memiliki satu thread yang berjalan, biasanya digunakan sebagai pengendali proses.
b. Multi Thread
Proses memiliki lebih dari satu thread yang berjalan, proses. menjalankan lebih dari satu tugas dalam satu waktu yang sama.
berikut adalah contoh penggunaan thread. menggunakan aplikasi VLC dan lagu [A.mp3]
Apa itu IPC?
Interprocess Communication merupakan cara atau mekanisme pertukaran data antar process.
terdapat beberapa jenis IPC
a. Pipes
Merupakan komunikasi sequential antar process yang saling terelasi.
b. Message Queue
proses komunikasi antar bagian sistem untuk berbagi variable yang dibutuhkan. Memiliki 2 Operasi, mengirim dan menerima pesan.
c. Shared Memory
Berbagi memori yang dibutuhkan untuk komunikasi antar process memori sebelumnya dialokasikan terlebih dahulu.
d. Socket
Bentuk komunikasi UDP dan TCP menggunakan abstraksi socket, menyediakan endpoint untuk komunikasi antar process.
untuk saat ini saya akan lebih membahas Shared Memory
disini ada contoh program tentang jual beli. jumlah barang dagang akan diakses menggakan shared memory.
berikut contoh programnya
Penjual.c
terdapat 6 shared memory.
Pembeli.c
Sedikit penjelasan:
shmid = shmget(key, sizeof(int), IPC_CREAT | 0666 )
sintaks : shmget(key_t key, size_t size, int shmflg)
shmget merupakan fungsi yang akan merequest share memory ID dari key,
key disini adalah sebagai kode antara server dan client, bebas tapi harus sama
size, merukan size segment share memory dalam satuan byte
int shmflg, memberikan akses ke server dengan IPC_CREAT jika ingin membuat segmen, atau bisa juga dengan 0.
0666 , digit pertama untuk tipe file, dua akses user, tiga akses group , empat akses user lainnya.
0000 no permissions
0111 execute
0222 write
0333 write & execute
0444 read
0555 read & execute
0666 read & write
0777 read, write, & execute
w = shmat(shmid, NULL, 0);
sintaks : *shmat(shmid, *shmaddr, shmflg)
shmid memiliki identifier dari segment share memory
tapi bagaimana kamu bisa memberikan pointer terhadap shmid?
itulah gunanya shmat
shmid merupakan shared memory id yang didapat dari shmget
shmaddr memberi tahu shmat spesifik address untuk digunakan, tapi bisa ditulis 0 dan membiarkan OS memilih sendiri.
shmflg, bisa di set SHM_RDONLY jika hanya membaca atau bisa 0