Tag: 同步

使用Semaphores的程序在Linux上运行良好…在Mac OSX上出现意外结果

我写了一个简单的程序,使用信号量解决了Readers-Writers问题。 它在Linux操作系统上运行完美,但是当我在Mac OSX上运行时,我得到了意想不到的结果,我无法弄清楚原因。 我的计划: #include #include #include #include #include void* function1(void* val); void* function2(void* val); // shared values volatile int X; volatile int Y; // declare semaphores sem_t s1; sem_t s2; main() { void* status; pthread_t thread1; pthread_t thread2; srand(time(NULL)); // initialize semaphores to zero sem_init(&s1, 0, 0); sem_init(&s2, 0, 0); pthread_create(&thread1, NULL, function1, NULL); […]

如何使用共享内存在进程之间共享信号量

我必须将N个客户端进程与一个服务器同步。 这些进程由一个main函数分叉,我在其中声明了3个信号量。 我决定使用POSIX信号量,但我不知道如何在这些进程之间共享它们。 我认为共享内存应该正常工作,但我有一些问题: 如何在我的细分中分配正确的内存空间? 我可以在shmget size_t字段中使用sizeof(sem_t)来准确分配我需要的空间吗? 有没有人有类似这种情况的例子?