boost-interprocess

    1熱度

    1回答

    我總是得知,共享內存是在兩個線程之間共享數據的最快方式(例如http://www.boost.org/doc/libs/1_55_0/doc/html/interprocess.html)。但是,今天我發現使用boost::ref(X)可以給boost提供X,從而允許從線程外部訪問X。因此下面的僞代碼應該工作: MyObjext X(para1,para2); // MyObject has a(

    2熱度

    1回答

    我已經列舉了關於「在shared_memory中創建向量」的boost樣本。 現在我的數據結構是這樣的: 數據結構: enum FuncIndex { enmFunc_glBegin, ... } class CGLParam {}; class Funcall { vector<CGLParam> vecParams; }; class Glob

    1熱度

    2回答

    我需要一種使用C或C++的方法來從/dev/shm獲取可用內存。請注意,在我的Linux上的ARM架構上,不幸的是,ipcs報告錯誤的最大值。可用內存信息,但df -h正確地給我從tmpfs當前可用內存。 問題是我試圖通過boost::interprocess::shared_memory_object::truncate分配共享內存,但是當內存不可用時,此函數不會拋出。這個問題並不明顯在boos

    5熱度

    1回答

    請考慮以下結構: struct ThingThatWillGoInSharedMemory { boost::optional<int> opt_value; }; 我使用boost ::進程間創建共享內存區域。我對boost :: optional的理解是它是一個有區別的聯合而不是可空指針。 作爲一個反例,像std :: map和std :: vector這些使用堆的東西需要一個

    0熱度

    2回答

    因此,此問題與前一個(std::string,而不從char*複製)相關聯。 現在我遇到了boost:interprocess::string,它允許在共享內存地址空間內構建字符串。由於我已經有了我的char*內存,所以我想知道是否可以重新使用boost:interprocess::string以避免複製。 但是,我正在閱讀的每個文檔都使用boost::interprocess::managed_

    1熱度

    1回答

    我有一大組數據塊(〜50GB)。在我的代碼中,我必須能夠做以下事情: 重複遍歷所有塊並對它們進行一些計算。 反覆遍歷所有塊並對它們進行一些計算,在每次迭代中訪問塊的順序(儘可能)是隨機的。 到目前爲止,我已經分裂成數據10個二進制文件(boost::serialization創建),並反覆讀一前一後進行計算。對於(2),我以隨機順序讀取了10個文件,並按順序處理每個文件,這足夠好。 然而,讀取文件

    1熱度

    1回答

    我有一個很小的兩個程序的例子,一個寫共享內存段,另一個從中讀取。我意識到std::string(和其他容器)存在潛在的問題,所以嘗試boost::interprocess::string這是boost::containers::string。我很確定這是缺少一些真正的基本和簡單的東西,但看不到它! 在任何情況下,概要是當字符串很小(我認爲雖然大於SSO)運行第一個程序寫入內存和第二個讀取完美。但是

    1熱度

    1回答

    我已經創建了一個Boost共享內存,用於共享向量。 共享已完成。 但是,我不明白向量如何被推入共享內存。 我做了push_back到寫入過程的共享內存。因此,這些載體正在被按入堆棧push以LIFO順序進入共享內存?現在,這裏 managed_shared_nmemory segment (open_only, "Shared_mem_name"); Vector = segment.find<

    5熱度

    1回答

    在C++中,使用boost :: interprocess,你可以定義一個boost :: interprocess :: basic_string,它基本上是一個存儲在內存映射文件中的字符串的抽象。你可以像應用程序中的任何其他字符串一樣無縫地使用它(假設當然你要考慮到線程安全性)。 C#中是否有任何等價的庫/ nuget包/一段代碼?

    1熱度

    1回答

    我認爲調用timed_receive()會在這種情況下超時,但它會卡住試圖鎖定互斥鎖。 那麼在嘗試接收數據之前,我可以調用一個函數來告訴我發送過程是否已經死亡或被暫停?