Katakanlah kita memiliki beberapa utas yang ingin memeriksa kapan utas lain selesai tugasnya. Saya telah membaca bahwa kita harus memanggil fungsi tipe wait () yang akan membuat utas ini menunggu hingga menerima pemberitahuan bahwa utas lainnya selesai. Dan ini bagus karena itu berarti kami tidak melakukan polling yang mahal.
Tetapi bukankah pemungutan suara terjadi secara internal di tingkat yang lebih rendah? Yaitu jika kita membuat utas menunggu () bukankah kernal melakukan polling untuk memeriksa kapan utas lainnya selesai sehingga kemudian dapat memberi tahu utas pertama?
Saya kira saya kehilangan sesuatu di sini, dapatkah seseorang mencerahkan saya?
_exit(2)
sistem POSIX-y) atau tanpa sengaja (misalnya, kesalahan seperti divide-by-zero menghasilkan interupsi atau panggilan lainkill(2)
). Dalam kedua kasus, kontrol secara eksplisit diserahkan kembali ke OS, yang tahu proses apa yang sedang berjalan atau harus dibunuh. Tugas untuk mengakhiri suatu proses termasuk membebaskan sumber dayanya, termasuk mutex. Jika mutex dipegang oleh proses yang sekarang mati, OS akan merilisnya. Jika prosesnya ada di daftar tunggu mutex, itu akan dihapus.