Tag: shared memory

共享内存或mmap – Linux C / C ++ IPC

上下文是进程间通信,其中一个进程(“服务器”)必须将固定大小的结构发送到在同一台机器上运行的许多侦听进程(“客户端”)。 在Socket Programming中我很自在。 为了更快地在服务器和客户端之间进行通信并减少副本数量,我想尝试使用共享内存(shm)或mmaps。 操作系统是RHEL 64位。 由于我是新手,请建议我应该使用哪个。 如果有人能指点我一本书或在线资源来学习同样的东西,我会很感激。 谢谢你的回答。 我想补充一点,服务器(市场数据服务器)通常会接收多播数据,这将导致它每秒向“客户端”“发送”大约200,000个结构,其中每个结构大约为100字节。 shm_open / mmap的实现是否仅对大型数据块或大量小型结构的性能优于套接字?

如何在LynxOS / POSIX中同步对共享内存的访问?

我正在通过共享内存进行通信的LynxOS SE (POSIX conformant)系统上实现两个进程。 一个过程将充当“生产者”,另一个过程充当“消费者”。 在multithreading系统中,我的方法是使用互斥和condvar(条件变量)对,消费者等待condvar(使用pthread_cond_wait ),生成器在更新共享内存时用信号通知(使用pthread_cond_wait ) 。 如何在多进程架构而不是multithreading架构中实现这一目标? 是否有LynxOS / POSIX方法来创建可在进程之间使用的condvar / mutex对? 或者在这种情况下,其他一些同步机制更合适吗?

如何在C中的分叉进程上使用POSIX信号量?

我想分叉多个进程,然后在它们上使用信号量。 这是我尝试过的: sem_init(&sem, 1, 1); /* semaphore*, pshared, value */ . . . if(pid != 0){ /* parent process */ wait(NULL); /* wait all child processes */ printf(“\nParent: All children have exited.\n”); . . /* cleanup semaphores */ sem_destroy(&sem); exit(0); } else{ /* child process */ sem_wait(&sem); /* P operation */ printf(” Child(%d) is in […]