作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要在 C 中做一些进程同步。我想使用监视器,我已经阅读了很多关于它们的内容。然而,我一直无法找到如何在 C 中实现一个。我已经看到它们是用 Java 和其他语言(如 C++)完成的,但我无法在 C 中找到示例。
我查看了 K&R,里面没有例子。我浏览了 Unix 系统编程、通信、并发和线程,但无法在其中找到监视器实现。
这让我来到这里。我在哪里以及如何定义监视器?我如何在其余代码中实现它?
/* 我在 *nix 环境中编码 */
最佳答案
我最近为一个项目做了这个,我实现的概念是让一个线程启动所有其他线程,然后在处理共享内存时使用信号量和互斥量来控制进程间同步问题。
在监视器设计模式的上下文中,监视器的概念是一种基本上用于隐藏互斥的结构。这个概念在 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");
关于c - 我如何在 C 中编写监视器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827598/
我是一名优秀的程序员,十分优秀!