![]() 20
Mekanisme
yang sering digunakan karena
lebih sederhana adalah
mutex.
Mutex baik
digunakan untuk menjamin mutual exclusion untuk beberapa sumber daya yang
dibagi
atau
bagian
dari
code. Mutex
mudah dan efisien untuk di implementasikan,
terutama
untuk
multithread yang diimplementasikan
pada
proses
yang
sama
(Tanenbaum, 2009, p129).
Mutex
adalah sebuah variable yang hanya memiliki dua kondisi yaitu:
unlocked
atau
locked.
Oleh
karena
itu
hanya
1
bit
yang
dibutuhkan
untuk
menampung
mutex,
tetapi pada
implementasi sering digunakan integer,
dimana
0
berarti
unlocked
dan
nilai
yang
lain
berarti
locked.
Ketika
sebuah
thread
melakukan
akses
ke critical region, prosedur tersebut
memanggil
mutex_lock (Pada .NET
framework
dikenal
dengan WaitOne()).
Jika
mutex
sedang
unlocked,
maka thread
yang
memanggil
mutex dapat
memasuki critical region. Sebaliknya jika mutex dalam
keadaaan
locked,
thread yang
memanggil
harus
menunggu
hingga
mutex
dalam
kondisi unlocked. Pada tabel 2.2 digambarkan bagaimana sinkronisasi antar dua
thread pada pemrograman multithread.
Tabel 2.2 - Contoh Sinkronisasi Antar Dua thread
No.
Thread Utama
1.
Thread utama aktif, Thread utama membuat sebuah objek mutex yang akan
dipakai bersama-sama oleh semua thread. Thread utama membuat dan
menjalankan 2 buah thread
Thread 1
Mutex
Thread 2
2.
Thread 1 aktif
Thread 2 Aktif
3.
Thread 1 melakukan
proses Lock terhadap
mutex.
Dipegang Thread 1
(Locked)
Thread 2 Aktif
4.
Thread 1 Aktif
Dipegang Thread 1
(Locked)
Thread 2 ingin mengakses
Critical Region tetapi
mutex statusnya Locked
|