首页 文章
  • 1 votes
     answers
     views

    寻找具有某些品质的完全内存数据库

    我的应用程序允许多个用户上传他们自己的Lua脚本,我希望添加数据库功能,没有任何高性能,只是一个键/值存储,或NoSQL类型的东西 . 该应用程序是一个分叉服务器,因此每个数据库的多个副本非常浪费 . 每次加载应用程序时,都会从Lua脚本中重新加载数据库,然后自我毁坏(无需在加载后保持加载数据) . 我对MongoDB和Redis非常熟悉,那些支持的操作对于我需要的东西来说太过分了 . 实际上,除...
  • 0 votes
     answers
     views

    当我试图改变一张 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 votes
     answers
     views

    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 votes
     answers
     views

    C语言:如何通过IPC在父和子(分叉)进程之间共享一个结构(或者,如果不可能,一个数组)?

    过去两周我用Google搜索了这个,我没有得到任何答案 . 这就是我所拥有的: 父进程,它创建一个struct myStruct ,它基本上是一个使用指针的链表(如果这是一个主要问题,我可以接受使用固定大小的数组) . 使用 fork() 创建的固定数量的子进程需要对父进程创建的结构(或数组)进行读/写访问 . 我不知道怎么做才能使变量 myStruct 在进程之间共享 . 我尝试使...
  • 1 votes
     answers
     views

    Boost ::进程间容器容器调整大小没有默认构造函数

    在梳理了Boost :: Interprocess文档和Google搜索之后,我想我已经找到了解决问题的原因/解决方法 . 正如我所理解的那样,我发现的所有东西似乎都暗示着这一点,但并没有出来说“做这个因为......” . 但如果有人能证实这一点,我会很感激 . 我正在编写一系列类,这些类表示存储在内存中的大量信息查找,以便在并行化应用程序中实现快速性能 . 由于数据的大小和一台机器上一次运行的...
  • 3 votes
     answers
     views

    在Windows上以原子方式替换内存映射

    有没有办法在Windows上自动替换内存映射? 在Unix上,带有MAP_FIXED的mmap()将原子地替换在请求的地址处映射的页面 . 但是在Windows上,如果页面已经映射到地址,则不能在地址上使用MapViewOfFileEx() . 必须首先取消映射现有页面,例如使用UnmapViewOfFile() . 这意味着地址未分配的时间很短,因此如果另一个线程同时创建内存映射,则可能将其放在...
  • 2 votes
     answers
     views

    SocketException(0x80004005):远程主机强制关闭现有连接

    希望有人可以帮助解决这个问题 . 我们的客户端应用程序最多可以生成3个服务器应用程序(新进程),并通过TCP与每个应用程序进这些反过来在提示时产生一个jvm(服务器app本质上是一个通过共享内存与jvm通信的包装器) . 当我将每个jvm上的内存设置为大约25gb(我有8gb ram)时,它将不会运行任何3个服务器应用程序并抛出上述异常 . 当我设置为10gb时,它将运行其中一个,但在我尝试启动第...
  • 1 votes
     answers
     views

    将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 votes
     answers
     views

    如何附加到现有共享内存段

    我遇到共享内存问题 . 我有一个创建和写入共享内存段的进程就好了 . 但我无法获得第二个进程来附加相同的现有段 . 如果我使用IPC_CREATE标志,我的第二个进程可以创建一个新的共享段,但我需要附加到第一个进程创建的现有共享段 . 这是我在第二个过程中的代码: int nSharedMemoryID = 10; key_t tKey = ftok("/dev/null", ...
  • 1 votes
     answers
     views

    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 votes
     answers
     views

    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 votes
     answers
     views

    在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 votes
     answers
     views

    如何使用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 votes
     answers
     views

    多处理中的共享内存对象

    假设我有一个大内存numpy数组,我有一个函数 func ,它接受这个巨大的数组作为输入(连同一些其他参数) . 具有不同参数的 func 可以并行运行 . 例如: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.app...
  • 52 votes
     answers
     views

    多处理中的共享内存

    我有三个大清单 . 首先包含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 votes
     answers
     views

    Python3多处理共享对象

    在Python 3.2.3中使用 multiprocessing 模块(在Debian 7.5上)时,我偶然发现了共享对象的同步问题 . 我把这个简单的例子放在一起来说明问题,它的功能类似于 multiprocessing.Pool.map (我能想到的最简单) . 我正在使用 multiprocessing.Manager ,因为我的原始代码使用它(通过网络同步) . 但如果我使用简单的 mul...
  • 2 votes
     answers
     views

    使用Cython多处理共享内存

    我试图用Cython和多处理包在共享内存中定义一个数组 . 但是,我无法在.pxd文件中声明此数组 . 简单的测试代码如下 . 我有一个带有变量my_data的Cython类数据 . 这个变量my_data将是共享数组 . Data.pxd: cimport numpy as np cdef class Data: cdef public np.ndarray my_dat...
  • 2 votes
     answers
     views

    共享内存和多处理

    从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 votes
     answers
     views

    共享内存中的条件变量 - 此代码是否符合POSIX标准?

    POSIX标准是否允许 named 共享内存块包含互斥锁和条件变量? 我们一直在尝试使用互斥和条件变量来同步对LynuxWorks LynxOS-SE system(POSIX-conformant)上的两个进程对命名共享内存的访问 . 一个共享内存块称为 &quot;/sync&quot; ,包含互斥锁和条件变量,另一个是 &quot;/data&quot; ,包含我们同步访问的实际数据 . 如...
  • 1 votes
     answers
     views

    共享内存段中映射数据的内存管理

    我正在研究一个在Linux系统上使用IPC共享内存的项目 . 但是,我对这些段中的内存管理有点困惑 . 我正在为这个项目使用POSIX API . 我了解如何创建共享段,并且如果您无法使用 shm_unlink() 正确删除它们,这些段将一直持续到重新启动 . 另外,我了解如何分别使用 mmap 和 munmap 进行实际映射和取消映射 . 但是,这些操作的使用以及它如何影响这些共享段中的存储数据...
  • 1 votes
     answers
     views

    2.x设备中的银行冲突

    具有2.x设备的设备中的银行冲突是什么?据我了解CUDA C编程指南,在2.x设备中,如果两个线程在同一共享内存库中访问相同的32位字,则不会导致存储体冲突 . 相反,这个词是广播的 . 当两个线程在同一共享内存库中写入相同的32位字时,只有一个线程成功 . 由于片上存储器为64 KB(共享存储器为48 KB,L1为16 KB,反之亦然),并且它由32个存储体组成,我假设每个存储体由2 KB组成 ...
  • 8 votes
     answers
     views

    任何人都有一个很好的C共享内存容器?

    我一直渴望得到一个STLish容器,我可以放入共享内存段或内存映射文件中 . 我已经考虑使用自定义分配器和placement new将常规STL容器放入共享内存段 . (像这个ddj article) . 问题是STL容器内部会有指向他们拥有的内存的指针 . 因此,如果共享内存段或内存映射文件加载到不同的基址(可能在后续运行或第二个进程中),则内部指针突然无效 . 据我所知,自定义分配器方法只有...
  • 9 votes
     answers
     views

    具有共享内存的进程之间的通信结果是零拷贝?

    我正在使用内核2.6在Linux上编写网络守护程序,该内核具有 one producer process 和 consumer processes 的N,它不会对数据进行任何更改,也不会向 生产环境 者创建任何响应 . 每当 生产环境 者进程生成一个数据对象,其长度从几个10字节变化到几十个K字节时,就必须将数据对象传递给一个可用的消费者进程 . 第一次,我考虑使用命名/未命名的PIPE . 但是...
  • 8 votes
     answers
     views

    使用Boost :: interprocess在共享内存中的<int,void *>映射

    我正在尝试在以下类型的共享内存中构建映射 我像这样创建共享内存区域: managed_shared_memory segment(create_only ,&quot;MyMap&quot; ,size); ShMemAllocator_t alloc_inst (segment.get_segment_manager()); map = segment.construc...
  • 1 votes
     answers
     views

    如何使用共享内存共享char **变量

    我正在使用共享内存在两个进程之间进行通信 . 我使用char **附加到共享地址空间 . 问题是当我在 生产环境 者上填充数据然后将消费者附加到地址空间时,没有数据被传输 . 我只是得到空值 这是我的制片人的片段 // create shared memory shm_handle = shmget(key, BUFF_SIZE * PAGE_SIZE, IPC_CREAT | 0644); pr...
  • 0 votes
     answers
     views

    从共享内存中打印垃圾值

    我目前正在使用C进行 生产环境 者 - 消费者实现 . 首先,我在可变长度的共享内存上创建一个缓冲区,该缓冲区由用户在使用者进程中提供 . 然后,在 生产环境 者进程中,我需要访问共享内存并将新数据放入缓冲区,以便消费者可以使用 . 以下是消费者代码: #include &quot;common.h&quot; #include &lt;unistd.h&gt; int fd; int errn...
  • -1 votes
     answers
     views

    C奇怪的共享内存分段错误

    我正在编写一个程序来学习和探索linux的IPC机制,我的目标之一是在我的进程之间创建一个共享内存,它存储了我需要的所有东西(POSIX信号量,结构和其他变量) . 我用valgrind运行我的应用程序,它工作正常但是当我在valgrind之外运行时,我得到了一个分段错误 . 但是当在valgrind中时,一切都正常运行并且内存按预期写入/读取,否则它会崩溃,因此很难调试它 . 这是初始化过程的代...
  • 0 votes
     answers
     views

    C中两个表达式的区别

    我目前正在研究用C完全开发的遗留代码中的一个问题 . 它使用共享内存概念 . 我想了解其中使用的一些表达式 . 假设一个结构 &gt; typedef struct &gt; { &gt; void* base; &gt; .... &gt; }shm_test_t; 表达式是这样的, &gt; shm_test_t test; &gt; test.base = (void*)(...
  • 0 votes
     answers
     views

    Python3多处理共享内存不正确的输出

    在下面的代码中,我正在创建一个multiprocessing.Array,并将其传递给2个不同的对象,其中一个将为此添加1并且将保持跟踪它没有添加一个,而另一个将减去1并且同样地跟踪它从中减去1的次数 . import multiprocessing class One(multiprocessing.Process): def __init__(self, value): ...
  • 0 votes
     answers
     views

    在共享内存中分配N size数组

    我有一个结构 struct { int size; char *data; }tmp_buf; 现在我想为共享内存中的结构分配内存(mmap-ed位置) 我的main()中有一个类型为“tmp_buf”的指针“tp”当我尝试在位置“tp-&gt; data”使用strncpy()时,它会产生一个分段错误 . 我有大小的mmap-ed共享内存(sizeof(struct tmp_buf)lengt...

热门问题