glib具有數據結構稱爲GAsyncQueue
,它允許沒有信號量/鎖/等線程間通信,並且甚至使瑣碎實施生產者/消費者溶液的任務。如果兩個不同的線程將數據推送到GAsyncQueue
結構,則push
函數在內部實現對隊列的互斥訪問;更令人敬畏的是,如果一個線程調用pop
函數,並且那裏沒有數據,調用線程將阻塞,直到某些數據被其他線程推入隊列。所有這些都是以線程安全的方式完成的,對開發人員來說是透明的。glib的GAsyncQueue等效於C++嗎?
,因爲我喜歡它一樣多,不過,這個庫是專爲C,並有可能成爲更高層次的語言更好的選擇。我在考慮使用無論如何巧舌如簧,但感覺奇怪的C++代碼使用C庫...
所以,問題是:是否有推薦++等值巧舌如簧一個C?更具體地說,是否有更多推薦的C++庫提供與GAsyncQueue
相同的功能?
用std :: queue',std :: mutex和std :: condition_variable'寫一個很容易 – 2013-02-27 18:17:33
@JonathanWakely當然,我同意你的看法,這很容易,但是我寧願使用經過充分測試(可能優化)的消息隊列實現,而不是從頭開始自己的實現。 – 2013-02-27 18:21:19