标准C++中的异步线程

nac*_*o4d 5 c++ multithreading asynchronous

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

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

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

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

提前致谢.

伊格纳西奥.

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

Jer*_*fin 6

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

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