我想實現一個簡單的發佈/訂閱模式,其中:發佈/訂閱和智能指針
單個發佈者發佈的令牌(一個指向對象)到它的用戶。發佈者和訂閱者都是獨立的線程。我打算爲每個訂閱者添加線程安全隊列,以便Publisher在處理令牌時可以繼續向訂閱者分發令牌。你可以看到,這意味着所有的訂閱者實際上都共享相同的指針(注意:訂閱者無法修改指向的對象,所以沒有問題)。一旦共享指針不再被任何訂閱者使用,如果指針可以在最後一個訂閱者線程完成後自動刪除自己,那將非常好。
這是一個使用智能指針的好地方嗎?如果是這樣,我應該使用哪些智能指針?
我使用MSVC2008在Windows上開發,並使用Intel TBB,Boost和Qt。
boost :: weak_ptr不適用於他的場景,除非發佈者保證在最後一個訂閱者完成之前保持對象活着。這對於異步隊列來說是不可行的。 – 2009-02-18 08:02:53