gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:10:54 27 4
gpt4 key购买 nike

我需要在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com