Rumah > Artikel > pembangunan bahagian belakang > Bilakah `boost::asio::io_service::run()` Menyekat dan Nyahsekat dalam Operasi Asynchronous?
Keliru apabila boost::asio::io_service menyekat/menyahsekat kaedah
Dalam Boost.Asio, io_service::run() kaedah bertanggungjawab untuk memproses kerja dan menggunakan pengendali yang berkaitan dengan io_service. Apabila urutan panggilan run(), ia biasanya akan menyekat sehingga:
Pengendali: A pengendali ialah fungsi panggil balik yang digunakan apabila operasi tak segerak selesai.
Dalam Contoh 3a:
Kaedah io_service::run() menyekat urutan pekerja sehingga pengiraan Fibonacci ( pengendali) telah selesai. Objek io_service::work memastikan bahawa io_service sentiasa mempunyai kerja yang perlu dilakukan, menghalang benang pekerja daripada keluar. Apabila kerja selesai, utas bercantum.
Dalam Kod Soalan:
io_service::run() menyekat sehingga operasi baca selesai. Sebaik sahaja pengendali baca dipanggil, io_service::run() kembali.
Perbezaan dan Perkara Utama:
Segerak lwn. Tak Segerak
Walaupun Kod Soalan menggunakan operasi tak segerak, ia berkelakuan berkesan seperti kod segerak kerana io_service::run() menunggu untuk operasi tak segerak selesai. Mencampurkan operasi segerak dan tak segerak boleh membawa kepada kerumitan.
Atas ialah kandungan terperinci Bilakah `boost::asio::io_service::run()` Menyekat dan Nyahsekat dalam Operasi Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!