gpt4 book ai didi

C++在辅助线程中运行任务并期望在主线程上得到响应

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:34 24 4
gpt4 key购买 nike

我必须在 C++ 中使用线程在后台运行任务。实际上在代码中我必须使用 curl 发送多个 HTTP 请求并且我不想使用主线程运行因为它会阻塞主线程直到任务完成。因此,我希望每个 http 请求都应该是这样的:

a) 创建一个新线程 b) 在这个新线程上发送 curl req c) 一旦请求/响应完成,将响应/数据发送回主线程

在此过程中,我希望主线程空闲并运行其他一些它自己的任务。我是 C++ 和线程的新手,请告知如何实现这一目标。

最佳答案

如果您希望在工作线程完成后立即通知您的主线程,那么听起来您需要在主线程中有一个消息处理循环。

我只是认为这可以像 WinAPI 中的窗口过程一样实现。类似的东西。

cEvent event;
while( true )
{
event = GetNextEvent();
if( event.GetType() == APPQUIT )
{
break;
}
if( event.GetType() == SENDHHPTREQUEST )
{
// Create worker thread etc.
}
else if( event.GetType() == HTTPREQUESTCOMPLETED )
{
// Process HTTP request resuts.
}
...
}

工作线程需要一种方法将事件发送到主线程。当然,从消息队列中添加、删除事件必须是线程安全的,即受互斥锁保护。我想创建请求或处理请求结果所需的所有数据都需要以某种方式打包到 cEvent 中。

关于C++在辅助线程中运行任务并期望在主线程上得到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13986876/

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