void workerFunc() //first thread
{
for (int x=0;x<30;x++) //count up to 29
{
cout << x << endl;
Sleep(1000); //one sec delay
}
}
void test() //second thread
{
for (int y=30;y<99;y++) //count up to 98
{
cout <<'\t'<< y << endl;
Sleep (1000); //delay one sec
}
}
int main(int argc, char* argv[])
{
cout << "Main started " << endl;
boost::thread workerThread(workerFunc); //start the 1st thread
boost::thread t1(test); //start the second thread
cin.get();
return 0;
}
嗨,当test()
的线程y = 35时,我想暂停/中断workerFunc()
线程中test()
的线程{{1}}
我怎样才能做到这一点?
答案 0 :(得分:1)
您可以使用boost::thread::interrupt
。当目标线程准备好被中断时,它必须定期调用其中一个interruption point functions。如果另一个线程调用boost::thread::interrupt
,则此函数将抛出boost::thread_interrupted
异常。如果您的线程处于状态,无法中断,但您需要调用可能被boost::thread::interrupt
中断的其中一项功能,请暂时使用disable_interruption
class禁用中断。
在您的情况下,只需使用boost::this_thread::sleep
来电替换Sleep
来电。