2012-05-29 38 views

回答

1

boost :: asio中的回調通常應該是相當快的。他們應該做一些工作,安排另一個工作並完成。這將是任務鬆動CPU和其他任務將被執行的要點。

boost::thread::interrupt()boost::thread_group::interrupt_all(),但他們只能在斷點停止執行線程。中斷將被視爲例外boost::thread_interrupted。這意味着,你必須以某種方式處理異常 - 在你的情況下 - 釋放當前的任務。它比其他處理和調度處理程序的一個步驟要複雜得多。

此外,您可以在執行您自己的例程的線程中使用interrupt()interrupt_all(),但運行io_service::run()的線程並非如此。可以想象,boost::thread_interrupted正在被run()方法拋出,而不是異步處理程序,它可能以意外行爲結束。