-
1 votesanswersviews
寻找具有某些品质的完全内存数据库
我的应用程序允许多个用户上传他们自己的Lua脚本,我希望添加数据库功能,没有任何高性能,只是一个键/值存储,或NoSQL类型的东西 . 该应用程序是一个分叉服务器,因此每个数据库的多个副本非常浪费 . 每次加载应用程序时,都会从Lua脚本中重新加载数据库,然后自我毁坏(无需在加载后保持加载数据) . 我对MongoDB和Redis非常熟悉,那些支持的操作对于我需要的东西来说太过分了 . 实际上,除... -
0 votesanswersviews
当我试图改变一张 table 时,我得到了“ table 'some table'已经满了” . 为什么?
我在debian上的mysql 5.6服务器(社区版)遇到了一些问题 . 我有一个大约4.5 GB的表 . 当我试图改变这个表添加一列(TINYINT默认值为0)时出现ERROR 1114,如下所示: ERROR 1114 (HY000): The table 'some table' is full 我've read this (and other) questions but I coul... -
1 votesanswersviews
64位共享内存段C \ linux问题
我想在C \ Linux中使用共享内存段来做一些IPC . 我继续像平常一样创建它: typedef struct { int a[2]; } shm_segment; ... shm_segment *shm; int shm_id; int shm_flags = IPC_CREAT | 0666 int shm_size = sizeof(struct shm_segment) ... -
4 votesanswersviews
C语言:如何通过IPC在父和子(分叉)进程之间共享一个结构(或者,如果不可能,一个数组)?
过去两周我用Google搜索了这个,我没有得到任何答案 . 这就是我所拥有的: 父进程,它创建一个struct myStruct ,它基本上是一个使用指针的链表(如果这是一个主要问题,我可以接受使用固定大小的数组) . 使用 fork() 创建的固定数量的子进程需要对父进程创建的结构(或数组)进行读/写访问 . 我不知道怎么做才能使变量 myStruct 在进程之间共享 . 我尝试使... -
1 votesanswersviews
Boost ::进程间容器容器调整大小没有默认构造函数
在梳理了Boost :: Interprocess文档和Google搜索之后,我想我已经找到了解决问题的原因/解决方法 . 正如我所理解的那样,我发现的所有东西似乎都暗示着这一点,但并没有出来说“做这个因为......” . 但如果有人能证实这一点,我会很感激 . 我正在编写一系列类,这些类表示存储在内存中的大量信息查找,以便在并行化应用程序中实现快速性能 . 由于数据的大小和一台机器上一次运行的... -
3 votesanswersviews
在Windows上以原子方式替换内存映射
有没有办法在Windows上自动替换内存映射? 在Unix上,带有MAP_FIXED的mmap()将原子地替换在请求的地址处映射的页面 . 但是在Windows上,如果页面已经映射到地址,则不能在地址上使用MapViewOfFileEx() . 必须首先取消映射现有页面,例如使用UnmapViewOfFile() . 这意味着地址未分配的时间很短,因此如果另一个线程同时创建内存映射,则可能将其放在... -
2 votesanswersviews
SocketException(0x80004005):远程主机强制关闭现有连接
希望有人可以帮助解决这个问题 . 我们的客户端应用程序最多可以生成3个服务器应用程序(新进程),并通过TCP与每个应用程序进这些反过来在提示时产生一个jvm(服务器app本质上是一个通过共享内存与jvm通信的包装器) . 当我将每个jvm上的内存设置为大约25gb(我有8gb ram)时,它将不会运行任何3个服务器应用程序并抛出上述异常 . 当我设置为10gb时,它将运行其中一个,但在我尝试启动第... -
1 votesanswersviews
将IVSHMEM与libvirt virt-manager一起使用
在 qemu 中使用 ivshmem 需要执行以下步骤 . 在主机 ./ivshmem_server 中启动ivshmem服务器,这将创建一个unix域套接字 /tmp/ivshmem_socket 使用以下命令行选项启动qemu- -chardev socket,path=/tmp/ivshmem_socket,id=ivshmem_socket -device ivshmem,cha... -
3 votesanswersviews
如何附加到现有共享内存段
我遇到共享内存问题 . 我有一个创建和写入共享内存段的进程就好了 . 但我无法获得第二个进程来附加相同的现有段 . 如果我使用IPC_CREATE标志,我的第二个进程可以创建一个新的共享段,但我需要附加到第一个进程创建的现有共享段 . 这是我在第二个过程中的代码: int nSharedMemoryID = 10; key_t tKey = ftok("/dev/null", ... -
1 votesanswersviews
C中的共享内存与LinkedList
我必须在C中开发一个迷你shell . 在这个项目中,我们必须处理局部变量和环境变量 . 所以我们可以有两个共享环境变量的进程,在父进程中可以看到一个变量创建,反之亦然 . 我的老师说: The environment variables are stored in a shared memory area that is created by the first copy of your she... -
0 votesanswersviews
Linux C共享内存无法在struct中获取字符串数组
我在struct push到共享内存中有动态数组 . 客户端链接此共享内存,我无法检索共享内存中的数组内容 . Server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/ipc.h> #i... -
1 votesanswersviews
在Python多处理中同步写入共享内存(列表)
我有以下代码: import multiprocessing manager = multiprocessing.Manager() 如果长度小于4则附加列表的函数或创建初始值为“y”的新函数 . def f(my_array): if len(my_array) < 4: my_array.append('x') else: my_arra... -
-2 votesanswersviews
如何使用UnmanagedMemoryAccessor.ReadArray <T>(Int64,T [],Int32,Int32)
我想读取/写入数据到内存映射文件 . 如何使用UnmanagedMemoryAccessor.ReadArray(Int64,T [],Int32,Int32) struct Data {public int a; public int b; public byte [];} static Data _sdata = new Data(); static Data _mydata = ne... -
84 votesanswersviews
多处理中的共享内存对象
假设我有一个大内存numpy数组,我有一个函数 func ,它接受这个巨大的数组作为输入(连同一些其他参数) . 具有不同参数的 func 可以并行运行 . 例如: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.app... -
52 votesanswersviews
多处理中的共享内存
我有三个大清单 . 首先包含bitarrays(模块bitarray 0.8.0),另外两个包含整数数组 . l1=[bitarray 1, bitarray 2, ... ,bitarray n] l2=[array 1, array 2, ... , array n] l3=[array 1, array 2, ... , array n] 这些数据结构需要相当多的RAM(总共约16GB) ... -
1 votesanswersviews
Python3多处理共享对象
在Python 3.2.3中使用 multiprocessing 模块(在Debian 7.5上)时,我偶然发现了共享对象的同步问题 . 我把这个简单的例子放在一起来说明问题,它的功能类似于 multiprocessing.Pool.map (我能想到的最简单) . 我正在使用 multiprocessing.Manager ,因为我的原始代码使用它(通过网络同步) . 但如果我使用简单的 mul... -
2 votesanswersviews
使用Cython多处理共享内存
我试图用Cython和多处理包在共享内存中定义一个数组 . 但是,我无法在.pxd文件中声明此数组 . 简单的测试代码如下 . 我有一个带有变量my_data的Cython类数据 . 这个变量my_data将是共享数组 . Data.pxd: cimport numpy as np cdef class Data: cdef public np.ndarray my_dat... -
2 votesanswersviews
共享内存和多处理
从this question及其答案,我想我理解为什么这个python代码: big_list = [ {j: 0 for j in range(200000)} for i in range(60) ] def worker(): for dic in big_list: for key in dic: pass ... -
5 votesanswersviews
共享内存中的条件变量 - 此代码是否符合POSIX标准?
POSIX标准是否允许 named 共享内存块包含互斥锁和条件变量? 我们一直在尝试使用互斥和条件变量来同步对LynuxWorks LynxOS-SE system(POSIX-conformant)上的两个进程对命名共享内存的访问 . 一个共享内存块称为 "/sync" ,包含互斥锁和条件变量,另一个是 "/data" ,包含我们同步访问的实际数据 . 如... -
1 votesanswersviews
共享内存段中映射数据的内存管理
我正在研究一个在Linux系统上使用IPC共享内存的项目 . 但是,我对这些段中的内存管理有点困惑 . 我正在为这个项目使用POSIX API . 我了解如何创建共享段,并且如果您无法使用 shm_unlink() 正确删除它们,这些段将一直持续到重新启动 . 另外,我了解如何分别使用 mmap 和 munmap 进行实际映射和取消映射 . 但是,这些操作的使用以及它如何影响这些共享段中的存储数据... -
1 votesanswersviews
2.x设备中的银行冲突
具有2.x设备的设备中的银行冲突是什么?据我了解CUDA C编程指南,在2.x设备中,如果两个线程在同一共享内存库中访问相同的32位字,则不会导致存储体冲突 . 相反,这个词是广播的 . 当两个线程在同一共享内存库中写入相同的32位字时,只有一个线程成功 . 由于片上存储器为64 KB(共享存储器为48 KB,L1为16 KB,反之亦然),并且它由32个存储体组成,我假设每个存储体由2 KB组成 ... -
8 votesanswersviews
任何人都有一个很好的C共享内存容器?
我一直渴望得到一个STLish容器,我可以放入共享内存段或内存映射文件中 . 我已经考虑使用自定义分配器和placement new将常规STL容器放入共享内存段 . (像这个ddj article) . 问题是STL容器内部会有指向他们拥有的内存的指针 . 因此,如果共享内存段或内存映射文件加载到不同的基址(可能在后续运行或第二个进程中),则内部指针突然无效 . 据我所知,自定义分配器方法只有... -
9 votesanswersviews
具有共享内存的进程之间的通信结果是零拷贝?
我正在使用内核2.6在Linux上编写网络守护程序,该内核具有 one producer process 和 consumer processes 的N,它不会对数据进行任何更改,也不会向 生产环境 者创建任何响应 . 每当 生产环境 者进程生成一个数据对象,其长度从几个10字节变化到几十个K字节时,就必须将数据对象传递给一个可用的消费者进程 . 第一次,我考虑使用命名/未命名的PIPE . 但是... -
8 votesanswersviews
使用Boost :: interprocess在共享内存中的<int,void *>映射
我正在尝试在以下类型的共享内存中构建映射 我像这样创建共享内存区域: managed_shared_memory segment(create_only ,"MyMap" ,size); ShMemAllocator_t alloc_inst (segment.get_segment_manager()); map = segment.construc... -
1 votesanswersviews
如何使用共享内存共享char **变量
我正在使用共享内存在两个进程之间进行通信 . 我使用char **附加到共享地址空间 . 问题是当我在 生产环境 者上填充数据然后将消费者附加到地址空间时,没有数据被传输 . 我只是得到空值 这是我的制片人的片段 // create shared memory shm_handle = shmget(key, BUFF_SIZE * PAGE_SIZE, IPC_CREAT | 0644); pr... -
0 votesanswersviews
从共享内存中打印垃圾值
我目前正在使用C进行 生产环境 者 - 消费者实现 . 首先,我在可变长度的共享内存上创建一个缓冲区,该缓冲区由用户在使用者进程中提供 . 然后,在 生产环境 者进程中,我需要访问共享内存并将新数据放入缓冲区,以便消费者可以使用 . 以下是消费者代码: #include "common.h" #include <unistd.h> int fd; int errn... -
-1 votesanswersviews
C奇怪的共享内存分段错误
我正在编写一个程序来学习和探索linux的IPC机制,我的目标之一是在我的进程之间创建一个共享内存,它存储了我需要的所有东西(POSIX信号量,结构和其他变量) . 我用valgrind运行我的应用程序,它工作正常但是当我在valgrind之外运行时,我得到了一个分段错误 . 但是当在valgrind中时,一切都正常运行并且内存按预期写入/读取,否则它会崩溃,因此很难调试它 . 这是初始化过程的代... -
0 votesanswersviews
C中两个表达式的区别
我目前正在研究用C完全开发的遗留代码中的一个问题 . 它使用共享内存概念 . 我想了解其中使用的一些表达式 . 假设一个结构 > typedef struct > { > void* base; > .... > }shm_test_t; 表达式是这样的, > shm_test_t test; > test.base = (void*)(... -
0 votesanswersviews
Python3多处理共享内存不正确的输出
在下面的代码中,我正在创建一个multiprocessing.Array,并将其传递给2个不同的对象,其中一个将为此添加1并且将保持跟踪它没有添加一个,而另一个将减去1并且同样地跟踪它从中减去1的次数 . import multiprocessing class One(multiprocessing.Process): def __init__(self, value): ... -
0 votesanswersviews
在共享内存中分配N size数组
我有一个结构 struct { int size; char *data; }tmp_buf; 现在我想为共享内存中的结构分配内存(mmap-ed位置) 我的main()中有一个类型为“tmp_buf”的指针“tp”当我尝试在位置“tp-> data”使用strncpy()时,它会产生一个分段错误 . 我有大小的mmap-ed共享内存(sizeof(struct tmp_buf)lengt...