gpt4 book ai didi

c++ - 如何在另一个线程中暂停/中断 boost::thread?

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:32 26 4
gpt4 key购买 nike

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 ()

我怎样才能做到这一点?

最佳答案

您可以使用boost::thread::interrupt。您的目标线程必须调用 interruption point functions 之一周期性地,当它准备好被打断时。如果另一个线程调用boost::thread::interrupt,这个函数将抛出boost::thread_interrupted异常。如果您的线程处于无法中断的状态,但您需要调用可以被 boost::thread::interrupt 中断的函数之一,只需使用 disable_interruption class 暂时禁用中断。 .

在您的情况下,只需将 Sleep 调用替换为 boost::this_thread::sleep电话。

关于c++ - 如何在另一个线程中暂停/中断 boost::thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com