2010-09-14 73 views
5

我想知道如何在標準C++中實現異步調用。標準C++中的異步線程

我有一個圖像/視頻處理程序,我想添加另一個函數/功能,但我希望它在另一個線程中運行或與異步運行到原始線程。

我只是想在這個新線程發生什麼事時通知主線程。 (這並不總是發生,主線程應該等待這個新進程結束,因此我更喜歡異步調用,如果這比多線程編程更簡單)

我希望我在右邊路徑。

在此先感謝。

Ignacio。

更新: 目前我還沒有使用任何線程庫,因爲直到現在我並不需要它。我在考慮升壓...這是一個好主意嗎?我應該在哪裏開始如果我想開始一些異步調用?

+3

當前標準或C++ 0x?目前的標準不支持線程,答案必須是選擇的庫。 – 2010-09-14 17:31:35

+1

如果你想要一個帶有良好C++接口的可移植線程庫,那麼boost是個不錯的選擇。 – 2010-09-14 17:56:43

回答

6

當前的C++標準沒有定義這樣的事情,但C++ 0x確實如此。這留下了一些選擇。最乾淨的是可能使用包含C++ future類(和親屬)的當前實現。這似乎正是你要找的東西。根據你使用的編譯器,支持可能已經被打包(例如,我相信它通常包含在gcc 4.5中),或者你可能需要/需要使用Boost版本(儘管我不相信它是官方的一部分提升版本 - 您需要查看保險庫)。

否則,你可以自己做一些事情,產生一個線程池並提交一個任務給它。如果你決定,我的建議是儘可能遵循標準接口future;幾乎不可避免的是,在某些時候你會有期貨可用,並且可能更願意使用它們而不是維護自己的版本。