【问题标题】:Thread pool Implementation using Boost::thread class使用 Boost::thread 类的线程池实现
【发布时间】:2013-08-23 06:50:33
【问题描述】:

我想使用boost::thread 类实现线程池。

我可以使用下面的行创建线程。

boost::thread Consumer_1(consume); 

其中consumer_1 是线程,consume 是绑定到它的函数。

上面的语句一执行就启动线程。

现在我只想创建线程并执行绑定运行时间。

我还没有发现boost 方法来延迟这个绑定。

有人可以帮忙吗?

【问题讨论】:

    标签: c++ multithreading boost boost-thread


    【解决方案1】:

    绑定不能稍后完成。主要的原因——一个执行线程必须在执行某些东西。

    您需要做的是创建一个函数,该函数将从队列中获取作业(表示为boost::function)并执行它们。比在一个或多个线程中运行此函数。

    我不确定是否存在线程安全队列,但您始终可以使用常规的 std::dequeboost::condition_variable 唤醒线程并使用 boost::mutex 锁定双端队列。

    您可能还想查看Boost.Asio。另见here

    【讨论】:

    • +1 推荐 Asio。您可能不想在生产代码中使用自己的线程池。如果必须,请查看 Williams 的“C++ Concurrency in Action”一书,该书有一整章关于该主题,讨论了许多您可能做错的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2012-08-26
    • 2014-04-12
    • 2012-09-04
    • 2021-01-31
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多