我需要在C中进行一些进程同步.我想使用一个监视器,我已经阅读了很多关于它们的内容.但是我一直无法找到如何在C中实现它.我已经看到它们用Java和其他语言(如C++)完成,但是我无法在C中找到它们.
我查看了K&R,那里没有例子.我浏览了Unix系统编程,通信,并发和线程,但无法在那里找到监视器实现.
这让我来到这里.我在哪里以及如何定义监视器?如何在其余代码中实现它?
/*我在*nix环境中编码*/
我这样做是最近的一个项目,我实现了这个概念是有一个线程启动所有的人,然后用信号灯和互斥控制进程间的同步问题,同时处理共享内存.
在监视器设计模式的上下文中,监视器的概念是一种基本上可以隐藏相互错位的构造.这个概念在C++ Boost中表达,但它在核心C++或C中不存在.在C中处理这种类型的作业的方式是使用老式的互斥(二进制信号量)和信号量.你可以在这里阅读更多相关信息.
下面是一个初始化信号量和互斥量的基本方法,你可能需要做一些关于如何以及何时使用每个信号量的内容,因为这里有点长,但这里有一个链接可以帮助你入门.
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");
Run Code Online (Sandbox Code Playgroud)