C语言中有监视器吗?
我正在阅读操作系统中的同步章节,正在阅读主题“监视器”。我知道监视器是高级语言结构。这让我想知道C是否提供类似监视器的东西?也许包含posix线程实现的库也应该提供监视器构造。而且,C中的线程不是stl的一部分,对吗 如果是,哪个头文件/库包含它,使用监视器的最基本的测试程序以及库如何实现监视器 这本书说监视器类型是ADT-抽象数据类型。我想知道,C结构是否模拟监视器数据类型C语言中有监视器吗?,c,concurrency,synchronization,operating-system,C,Concurrency,Synchronization,Operating System,我正在阅读操作系统中的同步章节,正在阅读主题“监视器”。我知道监视器是高级语言结构。这让我想知道C是否提供类似监视器的东西?也许包含posix线程实现的库也应该提供监视器构造。而且,C中的线程不是stl的一部分,对吗 如果是,哪个头文件/库包含它,使用监视器的最基本的测试程序以及库如何实现监视器 这本书说监视器类型是ADT-抽象数据类型。我想知道,C结构是否模拟监视器数据类型 谢谢,C甚至不支持线程,这是特定于实现的。您需要为显示器使用库。 C没有线程的概念,也没有提供监视器作为语法结构 POS
谢谢,C甚至不支持线程,这是特定于实现的。您需要为显示器使用库。
- C没有线程的概念,也没有提供监视器作为语法结构
- POSIX线程库只是一个库。C抽象工具的功能还不足以允许监视器作为库元素提供。POSIX提供了构建监控器所需的原语
- 要在C中实现监视器,您需要一个内容保持私有且至少有一个互斥体的结构,以及一组在该结构上操作的函数,这些函数从获取互斥体开始
POSIX线程并不专门提供监视器,但您可以使用监视器执行的所有操作,都可以使用互斥体加上条件变量。或者可能有两个条件变量,具体取决于您感兴趣的监视器类型:线程仅适用于下一版本的C标准,而不是当前版本。当前的方案非常类似于POSIX线程的功能,并且具有例如互斥体和条件变量作为控制结构。AfAIR监视器不在其中。 STL不是C,而是C++。他们非常不同。不要让任何人告诉你其他的事情。好的,在C中标准化的库(如果它们是)叫什么?事实上,我在C++的上下文中读过STL,并且认为C可能还有STL……(虽然STL中的模板有点让我困惑)C中唯一标准化的库是C标准库。(C++中唯一标准化的库是C++标准库,它包括标准模板库,但不是唯一的名称)。你说“C抽象工具不够强大,允许监视器作为库元素提供。”这意味着你甚至不能用C编写一个第三方库来充当监视器,但是你说“要在C中实现监视器,你需要一个结构,它的内容是私有的,并且至少有一个互斥体,以及一组在结构上操作的函数,这些函数从互斥体开始。”。这让我很困惑。是否可以或不可以使用C标准关键字/结构编写支持监控器的库?@p2pnode:这或多或少类似于面向对象编程。您可以用C编写监控器。您可以用C编写库,这将有助于您编写监控器。您不能向C添加新的语法结构以使一个监视器。但是如果你(ab)使用了足够多的宏,你可以接近这个目标。而对于OO,我知道有几个框架可以做到这一点,而对于监视器,我一个也不知道。