34
melepaskan penguncinya, thread peminta bisa mengakusisi pengunci
tersebut (tentunya bisa saja terdapat
beberapa
thread
men-spin,
dalam
kasus
ini
hanya
satu thread akan
mendapatkan penguncinya). Jika thread
pemilik tidak sedang berjalan di prosesor, thread peminta tidur. Dalam
kasus dimana beberapa thread peminta tidur untuk mendapatkan
pengunci, thread-thread seperti ini
mengakusisi
pengunci
berdasarka
prioritas urutan FIFO.
b.
Mutex spin bekerja sebagai berikut :
Thread peminta me-mask interupsi di tingkat yang ditentukan
oleh
sebuah
argumen
dari
mutex_init(9f). Thread peminta mencoba
mengakusisi
pengunci.
Jika
pengunci
telah
ada
pemiliknya,
thread
peminta men-spin dengan interrupts masked hingga pengunci dilepaskan
dan thread peminta dijamin memperoleh penguncinya. Ketika pengunci
tidak ada pemiliknya, thread peminta mengakusisi pengunci dan
melanjutkan pemrosesanya dengan interrupts masked. Interupsi di-
unmasked ketika pengunci dilepaskan. Dalam kasus dimana beberapa
thread
men-spin
(di
prosesor
yang
berbeda,
tentunya),
salah
satu
thread
ini akan mengakusisi pengunci ketika pengunci dilepaskan. Siapa yang
akan mengakusisi pengunci tergantun siapa yang lebih dulu
mendapatkannya.
Penggunaan
mutex
bersifat
sukarela (voluntary). Penggunaan
mutex
terlalu
banyak
menimbulkan
resiko kinerja buruk. Hindari
penggunaan mutex karena menimbulkan resiko data tak-konsisten.
|