标准 C++ 中的异步线程
Posted
技术标签:
【中文标题】标准 C++ 中的异步线程【英文标题】:Asynchronous threads in standard C++ 【发布时间】:2010-09-14 17:28:44 【问题描述】:我想知道如何在标准 C++ 中实现异步调用。
我有一个图像/视频处理程序,我想添加另一个函数/特性,但我希望它在另一个线程中运行或与原始线程异步运行。
我只想在这个新线程中发生某些事情时通知主线程。 (这并不总是发生,主线程没有理由等待这个新进程结束。因此我更喜欢异步调用,如果这比多线程编程更简单)
我希望我走在正确的道路上。
提前致谢。
伊格纳西奥。
更新: 目前我还没有使用任何线程库,因为到目前为止我还不需要它。我在 Boost 中思考……这是个好主意吗?如果我想开始一些异步调用,我应该从哪里开始?
【问题讨论】:
当前标准还是 C++0x?当前标准不支持线程,答案必须是选择的库。 如果你想要一个具有良好 c++ 接口的可移植线程库,那么 boost 是一个不错的选择。 【参考方案1】:当前的 C++ 标准没有定义这样的东西,但 C++0x 有。这留下了几个选择。最干净的可能是使用包含 C++ future
类(和亲属)的当前实现。这似乎正是您正在寻找的那种东西。根据您使用的编译器,支持可能已经打包(例如,我相信它通常包含在 gcc 4.5 中),或者您可能想要/需要使用 Boost 版本(尽管我不相信它是官方的一部分Boost 版本——您需要查看 Vault)。
否则,您可以自行创建线程池并向其提交任务。如果您决定这样做,我的建议是尽可能遵循future
的标准界面;几乎不可避免的是,在某些时候您将拥有可用的期货,并且可能更喜欢使用它们而不是维护自己的版本。
【讨论】:
以上是关于标准 C++ 中的异步线程的主要内容,如果未能解决你的问题,请参考以下文章