Rumah >pembangunan bahagian belakang >C++ >Bilakah `boost::asio::io_service::run()` Sekat?
Tingkah laku menyekat io_service::run() berpunca daripada pengendalian kerja dan pengendalinya. Ia kekal disekat sehingga:
Apabila io_service::run() menyekat sehingga "tiada lagi pengendali untuk dihantar," ini menandakan bahawa tiada tugas tertunggak dalam bentuk panggilan balik berdaftar.
Dalam contoh pertama (3a), blok io_service dalam run() sehingga ketiga-tiga pengendali pengiraan Fibonacci yang disiarkan telah dilaksanakan.
Kod klien nampaknya menggunakan I/O tak segerak (async_receive), tetapi ia berfungsi secara serentak:
Operasi segerak yang setara akan be:
boost::asio::error_code error; std::size_t bytes = socket.receive(buffer, error); // Execute handler with error and bytes
Mencampurkan operasi segerak dan tak segerak boleh memperkenalkan kerumitan. Pertimbangkan untuk mengelakkan amalan ini. Dokumentasi Boost.Asio menawarkan cerapan berharga tentang faedah pengaturcaraan tak segerak.
Atas ialah kandungan terperinci Bilakah `boost::asio::io_service::run()` Sekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!