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()会在这种情况下超时,但它会卡住试图锁定互斥锁。 那么在尝试接收数据之前,我可以调用一个函数来告诉我发送过程是否已经死亡或被暂停?