我有一个要求:“每隔X秒创建一个分离的工作线程,但前提是之前创建的分离线程已完成。如果在超时结束时,前一个线程未完成,则终止它并创建新线程。”
注意,我有一个创建分离线程的需求,因为我不想让我的主线程等待它完成。
我使用的是C++11线程类。
对此有什么帮助吗?
提前谢谢。
发布于 2020-01-20 16:51:18
要构建Sedat Kapanoglu的注释,您可以在当前线程的末尾启动新线程,但如果“每X秒”还没有过去,则添加一个超时。
您可以使用包装器函数来实现这一点。
也许是类似下面这样的东西:
void worker_wrapper()
{
using namespace std::chrono_literals;
auto start = std::chrono::system_clock::now();
// Run actual worker function
worker();
auto end = std::chrono::system_clock::now();
// If less than 300 seconds have passed, wait for the remainder of the 300 seconds
if (end - start < 300s)
{
std::this_thread::sleep_for(300s - (end - start));
}
// Create a new thread
std::thread next_thread(worker_wrapper);
next_thread.detach();
}当然,您可以添加条件来检查是否应该启动新线程。
https://stackoverflow.com/questions/59818525
复制相似问题