如何在 C++ 中创建线程池?

问题描述

我正在开发一个应用程序,我希望主线程在其中收集某些活动,然后将其发送到单独的工作线程。然后,该工作线程将这些活动放入队列(最好是基于文件的),然后将其发送到外部服务器。我的问题是如何让 Worker 线程永远运行以接收这些活动并将其发送到外部服务器,如果由于某种原因服务器关闭,它会重新尝试并继续尝试?

这是我的示例代码

 mFuture.push_back(std::async(std::launch::async,[activity]() {
            Worker w;
            w.add(activity);
            
 }));

和我的工人班

Worker::Worker()
{
    // open an SQLite connection may be? 
}

Worker::~Worker()
{
    // close the connection.
}

void Worker::add(IActivity& activity)
{
    // add an activity to the queue. 
}

void Worker::run() 
{
    while(true) { 
        // read from the queue and send it to the server
        // activity = next();
        send();
    }
}

void Worker::send()
{
    // send it to the server.
}

我希望 Worker 永远运行并继续接收活动,然后将其放入队列中,然后 Worker::run 应从队列中弹出活动并尝试将其发送到远程服务器,如果它失败了,它继续尝试,而主线程继续推动新活动。

我不完全知道这种方法是否正确,如果不是,那么什么是合适的方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)