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:
scala.bersamaan.ExecutionContext.Implicits.global
eksekusi konteks atau untuk dibuat pengguna eksekusi konteks juga?pemblokiran {
... }
?bergabung
membangun, dan ada lebih banyak pekerjaan yang harus diselesaikan
yang berpotensi menyelesaikan satu benang.
Atau, jika salah satu dari ForkJoinWorker
benang mengeksekusi blok kode yang lain dengan menggunakan bergabung
, 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 menggunakan blocking
.EDIT:
Mempertimbangkan untuk mengambil lihat pada Bab 4 dalam Belajar Pemrograman Konkuren dalam Scala buku.