2010-03-08 50 views
3

我想通過共享內存有一個管理進程共享圖,其他進程只讀,以便在這些進程上運行各種圖算法圖表。我想請教一些問題出現,而研究的問題:在C/++上的只讀共享內存中的輸入圖的圖算法(lib)

  • 是否有其能夠(可能是自己)圖形只讀SHM結構操作上的任何圖形庫?也就是說,算法需要在本地進程內存中存儲其工作空間和結果緩衝區,而不使用圖結構中聲明的任何緩衝區。

  • 兩個庫,我知道是有名的是的igraph升壓。我不太瞭解前者的C接口,還沒有使用Boost。有關該主題的任何經驗(關於shm兼容性)?

  • 查看Boost文檔時,我看到有一個支持shm的Boost.Interprocess包。

    • 起初我想過使用mmapped shm(Linux平臺)手動製作shm。 Boost是否優越並推薦使用這種方法?
    • Boost Graph庫與手動shm或Interprocess一起播放不錯嗎?

除了對這些問題的見解,我會很樂意瞭解您對圖形處理和共享內存的經驗。謝謝!

回答

1

在Boost Graph Library中,各種圖形類型只是概念(http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/graph_concepts.html)。

你應該能夠實現你自己的圖形結構,堅持你所需要的概念,並在你自己的數據上應用任何BGL算法(或者只是將你的共享數據包裝在edge_list類http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/edge_list.html中)。

既然你是在尋找共享內存,你可能也有興趣並行BGL(http://www.boost.org/doc/libs/1_42_0/libs/graph_parallel/doc/html/index.html

HTH