Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中有监视器吗?_C_Concurrency_Synchronization_Operating System - Fatal编程技术网

C语言中有监视器吗?

C语言中有监视器吗?,c,concurrency,synchronization,operating-system,C,Concurrency,Synchronization,Operating System,我正在阅读操作系统中的同步章节,正在阅读主题“监视器”。我知道监视器是高级语言结构。这让我想知道C是否提供类似监视器的东西?也许包含posix线程实现的库也应该提供监视器构造。而且,C中的线程不是stl的一部分,对吗 如果是,哪个头文件/库包含它,使用监视器的最基本的测试程序以及库如何实现监视器 这本书说监视器类型是ADT-抽象数据类型。我想知道,C结构是否模拟监视器数据类型 谢谢,C甚至不支持线程,这是特定于实现的。您需要为显示器使用库。 C没有线程的概念,也没有提供监视器作为语法结构 POS

我正在阅读操作系统中的同步章节,正在阅读主题“监视器”。我知道监视器是高级语言结构。这让我想知道C是否提供类似监视器的东西?也许包含posix线程实现的库也应该提供监视器构造。而且,C中的线程不是stl的一部分,对吗

如果是,哪个头文件/库包含它,使用监视器的最基本的测试程序以及库如何实现监视器

这本书说监视器类型是ADT-抽象数据类型。我想知道,C结构是否模拟监视器数据类型


谢谢,

C甚至不支持线程,这是特定于实现的。您需要为显示器使用库。

  • C没有线程的概念,也没有提供监视器作为语法结构

  • POSIX线程库只是一个库。C抽象工具的功能还不足以允许监视器作为库元素提供。POSIX提供了构建监控器所需的原语

  • P> STL是一个C++术语(甚至不是一个好的词,因为它对不同的人意味着不同的东西)。
  • 要在C中实现监视器,您需要一个内容保持私有且至少有一个互斥体的结构,以及一组在该结构上操作的函数,这些函数从获取互斥体开始


你说得对,线程不是标准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,我知道有几个框架可以做到这一点,而对于监视器,我一个也不知道。