1
我使用此代碼進行了測試。兩個線程thread_1
每200毫秒打印一個字符串,thread_2
在3秒內終止thread_1
。爲什麼升壓this_thread :: interrupt可以在沒有try-catch的情況下工作?
int main() {
boost::thread t1([&]() {
while(1) {
boost::this_thread::interruption_point();
cout << "t1 running" << endl;
Sleep(200);
}
cout << "it never goes here" << endl;
});
boost::thread t2([&]() {
Sleep(3000); // wait 3 seconds to terminate thread 1
cout << "interrupt t1" << endl;
t1.interrupt(); // thread 1 should raise a thread_interrupted exception ?
});
t1.join();
t2.join();
Sleep(5000); // sleep 5 seconds waiting for the crash
}
我希望代碼崩潰,但事實並非如此。然後我猜boost::thread
有一個try-catch,我在所有的「thread.hpp」和「thread_data.hpp」中搜索關鍵字catch
,但什麼也沒找到。
它是如何工作的?謝謝。