Bacaan lebih lanjut:
Saya ingin menyajikan beberapa artikel saya, yang tertarik pada sinkronisasi umum primitif dan mereka menggali Monitor, perilaku pernyataan kunci C #, properti, dan biaya tergantung pada skenario yang berbeda dan jumlah utas. Ini secara khusus tertarik tentang pemborosan CPU dan periode throughput untuk memahami berapa banyak pekerjaan yang dapat didorong dalam berbagai skenario:
https://www.codeproject.com/Articles/1236238/Unified-Concurrency-I-Introduction
https://www.codeproject.com/Articles/1237518/Unified-Concurrency-II-benchmarking-methodologies
https: // www. codeproject.com/Articles/1242156/Unified-Concurrency-III-cross-benchmarking
Jawaban asli:
Oh sayang!
Tampaknya jawaban yang benar yang ditandai di sini sebagai JAWABAN pada dasarnya salah! Saya ingin meminta penulis jawabannya, dengan hormat, untuk membaca artikel yang ditautkan sampai akhir. artikel
Penulis artikel dari tahun 2003 pasal itu mengukur pada mesin Dual Core saja dan dalam kasus pengukuran pertama, ia diukur mengunci dengan thread tunggal hanya dan hasilnya adalah sekitar 50ns per akses kunci.
Ia tidak mengatakan apa-apa tentang kunci di lingkungan bersamaan. Jadi kita harus melanjutkan membaca artikel dan di paruh kedua, penulis mengukur skenario penguncian dengan dua dan tiga utas, yang mendekati tingkat konkurensi prosesor saat ini.
Jadi penulis mengatakan, bahwa dengan dua utas pada Dual Core, kuncinya berharga 120ns, dan dengan 3 utas harganya menjadi 180ns. Jadi tampaknya jelas bergantung pada jumlah utas yang mengakses kunci secara bersamaan.
Jadi sederhana, bukan 50 ns kecuali jika itu adalah utas tunggal, di mana kuncinya menjadi tidak berguna.
Masalah lain yang perlu dipertimbangkan adalah bahwa waktu tersebut diukur sebagai waktu rata - rata !
Jika waktu iterasi akan diukur, akan ada waktu antara 1ms hingga 20ms, hanya karena mayoritas cepat, tetapi beberapa utas akan menunggu waktu prosesor dan bahkan menimbulkan penundaan milidetik.
Ini adalah berita buruk untuk semua jenis aplikasi yang membutuhkan throughput tinggi, latensi rendah.
Dan masalah terakhir yang perlu dipertimbangkan adalah bahwa mungkin ada operasi yang lebih lambat di dalam kunci dan seringkali demikian. Semakin lama blok kode dieksekusi di dalam kunci, semakin tinggi pertikaian dan penundaan meningkat setinggi langit.
Harap pertimbangkan, bahwa lebih dari satu dekade telah berlalu dari tahun 2003, itu adalah beberapa generasi prosesor yang dirancang khusus untuk berjalan secara penuh secara bersamaan dan penguncian sangat merugikan kinerja mereka.