首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++11中完成前一个迭代线程的情况下,每X秒创建一次线程?

如何在C++11中完成前一个迭代线程的情况下,每X秒创建一次线程?
EN

Stack Overflow用户
提问于 2020-01-20 15:17:33
回答 1查看 59关注 0票数 0

我有一个要求:“每隔X秒创建一个分离的工作线程,但前提是之前创建的分离线程已完成。如果在超时结束时,前一个线程未完成,则终止它并创建新线程。”

注意,我有一个创建分离线程的需求,因为我不想让我的主线程等待它完成。

我使用的是C++11线程类。

对此有什么帮助吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-20 16:51:18

要构建Sedat Kapanoglu的注释,您可以在当前线程的末尾启动新线程,但如果“每X秒”还没有过去,则添加一个超时。

您可以使用包装器函数来实现这一点。

也许是类似下面这样的东西:

代码语言:javascript
复制
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();
}

当然,您可以添加条件来检查是否应该启动新线程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59818525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档