题56

题目

[!error]+
Q:【2016 统考真题】下列关于管程的叙述中,错误的是 ( ) 。
A. 管程只能用于实现进程的互斥
B. 管程是由编程语言支持的进程同步机制
C. 任何时候只能有一个进程在管程中执行
D. 管程中定义的变量只能被管程内的过程访问

分析

[!NOTE]+
A:我觉得C是错的,是因为我觉得管程既然定义对共享数据结构的操作,那么这个操作应该是做了所谓的“保护措施的”,或者说这是一个函数化的操作,也就是给定了输入,输出是唯一的,显然我这里是自我想象了一些不存在的性质

A这个描述这么绝对,你在想什么,肯定选A啊,管程是pv的封装,pv可以同步、可以互斥,这是一种思想

[!done]+
A
管程是由一组数据及定义在这组数据之上的对这组数据的操作组成的软件模块, 这组操作能初始化并改变管程中的数据和同步进程。
管程不仅能实现进程间的互斥, 而且能实现进程间的同步, 因此 A 错误、B 正确;
管程具有如下特性:
①局部于管程的数据只能被局部于管程内的过程所访问;
②一个进程只有通过调用管程内的过程才能进入管程访问共享数据;
③每次仅允许一个进程在管程内执行某个内部过程,因此 正确。