由於boost.shared_ptr
的參用計數剄要同步的問題,所以會慢。

難道boost.intrusive_ptr
就不用同步嗎?
它只是把參用計數的動作給你,但在某些情況一樣要同步,
這樣就可以在保證線程安全的情況下不同步,節省原子操作。

我想到別人也想過的另外一種方法就是用標記法,
intrusive_ptr_add_ref
加入標記,
在intrusive_ptr_release
去掉標記,
但都不delete,
在另外一個優先權低的thread每隔一段時間就來檢查這些標記,
把標記全清空的指標delete掉。

這跟多個thread把做好的工作放到自己的queue上,
然後主thread把工作從這些queue拿出來時才做同步,
這樣一次只要對一個queue做同步,
其它的thread就繼續工作。

關於多執行緒我懂的還不多,只知道如果全部都要同步的東西是不能用多執行緒加速的。

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(0) 人氣()