我最近为一个项目做了这个,我实现的概念是让一个线程启动所有其他线程,然后使用信号量和互斥量来控制处理共享内存时的进程间同步问题.
在监视器设计模式的上下文中,监视器的概念是一种基本上可以隐藏相互排斥的构造.这个概念在C Boost中表达,但它在核心C或C中不存在.在C中处理这种类型的作业的方式是使用良好的老式互斥(二进制信号量)和信号量.您可以阅读有关此here的更多信息.
下面是初始化信号量和互斥量的基本方法,您可能需要阅读一下如何以及何时使用它们,因为这里有点长,但here是一个让您入门的链接.
pthread_mutex_t myMutex;
sem_t mySemaphore;
int status;
status = pthread_mutex_init(&myMutex, NULL);
if(status != 0)
exit_with_error("There was an Error Initalizing the Mutex\n");
status = sem_init(&mySemaphore, 0, 0);
if(status != 0)
printf("There was an Error Initalizing the Semaphore\n");