2012-10-09 51 views
2

我想繼續我以前被誤解爲與2D幾何有關的問題,因此我沒有得到滿意的答案(Share CGAL's geometry between processes in C++)並再次提出要求,但這次恰當地突出顯示,我正在討論3D Cgals多面體幾何。如何在共享內存中分配CGAL的Halfedge結構?

在CGAL手冊中,我讀到可以實例化HalfedgeDS。我想將它放在共享內存中,以便其他進程可以使用它(請注意,它必須在進程之間共享,而不是線程之間共享)。如何使我的自定義分配器,以滿足我的需求,所以我可以把它作爲Alloc參數?那麼其他參數 - 「特質」和「項目」呢 - 通常你只需要使用頂級類別就不用擔心。下面我發佈最有趣的片段,我發現微博賬號的CGALs手冊,我認爲可能會有所幫助:

一個HalfedgeDS是一個類模板,將用於 作爲論據其他類模板,用於例如CGAL :: Polyhedron_3。 用於實例化 HalfedgeDS的模板參數將由此其他類 模板提供。因此,三個模板參數及其含義 是強制性的。我們區分模板 HalfedgeDS及其實例。

請注意,我只對與三維幾何相關的解決方案感興趣。

回答

1

我想你有興趣使用CGAL::HalfedgeDS_list,這是Polyhedron類默認使用的。作爲HalfedgeDS概念的所有模型,它都有一個分配器作爲模板參數。

然後使用共享內存分配器(如boost interprocess allocator)將完成這項工作。

+0

您的回答是我在本文和我以前的問題中概述的問題的極好摘要。不幸的是,你沒有寫任何新東西:( –

+0

@ danilo2你有沒有試過用boost「interprocess allocator」?這個分配器的回答是不是你的問題? – PiotrNycz

+0

這個分配器可以使用,但是我需要提供「Traits」和「Items」參數。問題是,我不知道我應該通過哪些參數來初始化HalfedgeDS?(或者CGAL :: Polyhedron_3和Halfedge容器在共享內存中) –