如何在C中编写监视器代码?

前端之家收集整理的这篇文章主要介绍了如何在C中编写监视器代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在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);
    if(status != 0)
        printf("There was an Error Initalizing the Semaphore\n");

猜你在找的C&C++相关文章