问题描述
我正在开发一个应用程序,我希望主线程在其中收集某些活动,然后将其发送到单独的工作线程。然后,该工作线程将这些活动放入队列(最好是基于文件的),然后将其发送到外部服务器。我的问题是如何让 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 (将#修改为@)