0
我有一个关于C中多进程编程的问题,我有几个读取器进程将从一个文件读入一个共享缓冲区,几个写入进程从缓冲区读取到另一个文件中,什么类型的信号量我们需要为此使用吗?以及我们如何使用共享内存与信号量。信号量和共享内存
我有一个关于C中多进程编程的问题,我有几个读取器进程将从一个文件读入一个共享缓冲区,几个写入进程从缓冲区读取到另一个文件中,什么类型的信号量我们需要为此使用吗?以及我们如何使用共享内存与信号量。信号量和共享内存
如果你在linux上,一个简单的选择是使用pshared mutexes和条件变量。 glibc的recet版本将是必要的。基本上你的共享内存段里面,你会碰到这样的:
struct shmem_head {
pthread_mutex_t mutex;
};
初始化:
void init_shmem_head(struct shmem_head *head)
{
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&head->mutex, &attr);
pthread_mutexattr_destroy(&head->mutex);
}
你现在有一个互斥体,通过共享内存段开放所有进程共享。您可以简单地使用pthread_mutex_lock
锁定并且pthread_mutex_unlock
以正常方式解锁。如果你想要条件变量,也有类似的pthread_condattr_setpshared
。
什么操作系统?你使用任何多处理特定的库? – nmichaels
的Linux这里都是我包括在该文件的标题, 的#include 的#include 的#include 的#include 的#include 的#include 的#include 的#include 的#include #include #include 希望这有助于 –
MRK