【问题标题】:Asynchronous threads in standard C++标准 C++ 中的异步线程
【发布时间】:2010-09-14 17:28:44
【问题描述】:

我想知道如何在标准 C++ 中实现异步调用。

我有一个图像/视频处理程序,我想添加另一个函数/特性,但我希望它在另一个线程中运行或与原始线程异步运行。

我只想在这个新线程中发生某些事情时通知主线程。 (这并不总是发生,主线程没有理由等待这个新进程结束。因此我更喜欢异步调用,如果这比多线程编程更简单)

我希望我走在正确的道路上。

提前致谢。

伊格纳西奥。

更新: 目前我还没有使用任何线程库,因为到目前为止我还不需要它。我在 Boost 中思考……这是个好主意吗?如果我想开始一些异步调用,我应该从哪里开始?

【问题讨论】:

  • 当前标准还是 C++0x?当前标准不支持线程,答案必须是选择的库。
  • 如果你想要一个具有良好 c++ 接口的可移植线程库,那么 boost 是一个不错的选择。

标签: c++ multithreading asynchronous


【解决方案1】:

当前的 C++ 标准没有定义这样的东西,但 C++0x 有。这留下了几个选择。最干净的可能是使用包含 C++ future 类(和亲属)的当前实现。这似乎正是您正在寻找的那种东西。根据您使用的编译器,支持可能已经打包(例如,我相信它通常包含在 gcc 4.5 中),或者您可能想要/需要使用 Boost 版本(尽管我不相信它是官方的一部分Boost 版本——您需要查看 Vault)。

否则,您可以自行创建线程池并向其提交任务。如果您决定这样做,我的建议是尽可能遵循future 的标准界面;几乎不可避免的是,在某些时候您将拥有可用的期货,并且可能更喜欢使用它们而不是维护自己的版本。

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多