Use case dari scala.bersamaan.pemblokiran
Saya menemukan scala.bersamaan.pemblokiran
metode, dan menurut Scala dokumentasi ini adalah...
Digunakan untuk menunjuk sepotong kode yang berpotensi blok, yang memungkinkan saat ini BlockContext untuk menyesuaikan runtime's perilaku. Benar menandai memblokir kode dapat meningkatkan kinerja atau menghindari deadlock.
Saya memiliki beberapa keraguan:
- apa faktor yang thread baru akan melahirkan?
- Ini hanya berlaku untuk
scala.bersamaan.ExecutionContext.Implicits.global
eksekusi konteks atau untuk dibuat pengguna eksekusi konteks juga? - Apa yang terjadi jika saya bungkus setiap eksekusi dengan
pemblokiran {
...}
? - Penggunaan praktis kasus di mana kita harus menggunakan ini membangun.
71
1
bergabung
membangun, dan ada lebih banyak pekerjaan yang harus diselesaikan yang berpotensi menyelesaikan satu benang. Atau, jika salah satu dariForkJoinWorker
benang mengeksekusi blok kode yang lain dengan menggunakanbergabung
, itu dapat memberitahu kolam renang menggunakan `ManagedBlocker ini.ExecutionContext
implementasi kode dieksekusi oleh thread pekerja berpotensi pemblokiran pada beberapa kondisi, dan bahwa kondisi ini mungkin dapat diselesaikan dengan menghitung sesuatu yang lain dengan menggunakan beberapa thread lain. Konteks eksekusi mungkin atau tidak mungkin undang-undang ini. Pada saat ini (2.10, 2.11) pelaksanaan,memblokir
hanya akan bekerja dengan standar global eksekusi konteks.Menunggu
, atau anda sedang menunggu di monitor's syarat untuk menjadi teratasi, dan kondisi ini dapat diatasi dengan beberapa tugas lain/masa depan yang harus mengeksekusi pada konteks eksekusi -- dalam semua kasus ini, anda harus menggunakanblocking
.EDIT:
Mempertimbangkan untuk mengambil lihat pada Bab 4 dalam Belajar Pemrograman Konkuren dalam Scala buku.