Polling mengacu pada berulang kali memeriksa apakah suatu sumber daya ( segala jenis sumber daya) siap.
Spinlock adalah ketika sumber daya yang Anda polling adalah kunci.
Perhatikan bahwa pemungutan suara tidak buruk. Secara khusus, polling efisien ketika biasanya ada data yang siap ketika Anda polling. Polling hanya tidak efisien jika Anda melakukannya tanpa mendapatkan data apa pun sebagai balasannya.
Di sisi lain, interupsi tidak efisien jika ada begitu banyak data sehingga Anda terus-menerus terganggu. Mereka efisien jika data datang cukup jarang sehingga Anda benar-benar bisa menyelesaikan pekerjaan yang berguna sebelum terganggu.
Saya dapat memberi Anda contoh kehidupan nyata dari pengalaman saya sendiri: 15 tahun yang lalu, saya mengatur program email untuk mengganggu saya setiap kali email baru masuk. Yang terjadi sekali atau dua kali seminggu. Terus-menerus memeriksa kotak masuk saya akan membuang-buang waktu.
Saat ini, semua notifikasi saya dimatikan. Saya tahu bahwa setiap kali saya melihat kotak masuk saya, akan ada email baru di sana. Polling sekarang jauh lebih efisien.
Spinlocks efisien ketika a) kemungkinan kunci diambil rendah, dan b) jika kunci diambil, ia hanya akan ditahan untuk waktu yang singkat. Dengan kata lain: ini efisien untuk sebagian besar kunci berbutir halus, tetapi tidak efisien untuk kunci berbutir kasar yang sangat diperdebatkan.
(Dan tentu saja, spinlocks hanya berfungsi ketika ada paralelisme yang sebenarnya, kalau tidak thread lain tidak akan memiliki kesempatan untuk melepaskan kunci. Saya kira itu agak jelas, tetapi saya tetap ingin menyatakannya.)