标准C ++中的异步线程

时间:2010-09-14 17:28:44

标签: c++ multithreading asynchronous

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

我有一个图像/视频处理程序,我想添加另一个功能/功能,但我希望它可以在另一个线程中运行,或者与原始线程异步运行。

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

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

提前致谢。

伊格纳西奥。

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

1 个答案:

答案 0 :(得分:6)

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

否则,您可以通过生成线程池并向其提交任务来自行执行某些操作。如果您决定,我的建议是尽可能地遵循future的标准界面;几乎不可避免的是,在某些时候你会有期货,并且可能更喜欢使用它们而不是维护你自己的版本。