gpt4 book ai didi

c - 如何向正在进行冗长操作的线程发送消息?

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:55 24 4
gpt4 key购买 nike

我有一个主线程和一个工作线程。当主线程即将终止时,我需要向工作线程发送一条消息,以便它可以干净地自行终止(我听说 TerminateThread() 是个坏主意)。

工作线程将执行一个冗长的操作(需要超过 30 秒),那么有没有办法在以某种方式执行这个冗长的操作时向它发送消息。或者我的程序设计有误,工作线程不应该执行如此长的操作?

最佳答案

作为一般原则,不要终止线程。

您的后台工作线程可以定期检查程序是否要退出。你应该使用 std::atomic<bool>要做到这一点。这是有关如何使用它的示例。

#include <iostream>
#include <thread>
#include <atomic>

volatile std::atomic<bool> g_bExit(false);

void thread1()
{
while( !g_bExit )
{
// do stuff here
}
}

int main()
{
std::thread th1(thread1);

g_bExit = true;

th1.join() ; // wait for thread
}

关于c - 如何向正在进行冗长操作的线程发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29651507/

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