我正在尋找在C++中無鎖數據結構來替換以下:並行設置爲C + +?
pthread_mutex_lock(plock);
set.insert(element);
pthread_mutex_unlock(plock);
此組應該最多O(logN)的複雜性支持.insert()
和.size()
用,有一個迭代器,並應該能夠通過自定義比較器保持其順序。基本上和Java中的ConcurrentSkipListSet
一樣。理想情況下,它應該是平臺獨立的。
我在尋找CDS:http://libcds.sourceforge.net/doc/cds-api/modules.html,但不確定哪個數據結構可以實現目標。該文檔對於某些數據結構並不具有複雜性。
任何建議將是偉大的,謝謝!
你的平臺是什麼?如果是Windows,您可以探索PPL(http://msdn.microsoft.com/en-us/library/dd504906.aspx)。 – Jagannath 2014-11-05 00:33:56
我必須問你想要解決的真正問題在這裏?有可能你可以找到這樣一個無鎖容器......然後讓它變得比戰略上使用正常集合上的鎖更慢。 – 2014-11-05 01:52:53
你確定'ConcurrentSkipListSet'是否是無鎖的? – 2014-11-05 02:32:17