一、功能简介
当一个进程到达屏障的时候被屏障阻塞,当 N 个进程都到达屏障的时候,一起唤醒 N 个进程,使得 N 个进程一起开始进入下一个阶段的工作。引入一个专门的进程来广播唤醒 N 个进程。 由于 Windows操作系统采用基于优先级的抢占式调度策略,因此该专门进程的
优先级和其它 N 个进程的优先级需要区分高低。
屏障是一种同步机制,用于在多个进程中实现同步操作。当一个进程到达屏障时,它会 被阻塞,直到所有其他进程也到达屏障。一旦所有进程都到达屏障,它们将同时被释放,继 续执行后续的操作。屏障的主要作用是确保在并发执行的多个进程中,某些操作在所有进程 都完成之前不会执行。这对于需要在所有进程都完成某个阶段之后才能进行下一阶段的应用 程序非常重要。
屏障的实现可以基于硬件或软件。在硬件层面,屏障可以通过特定的指令来实现,例如 在多核处理器中的屏障指令。在软件层面,屏障可以通过共享变量和条件变量等机制来实现。
总而言之,屏障是一种用于实现多个进程之间同步的机制,确保在所有进程都到达屏障 之前,它们都会被阻塞,从而实现协同工作的目的。
二、总体结构框图
1. 所有进程开始执行并独立运行,直到到达屏障点。
2. 每个进程在到达屏障点时,首先检查屏障计数器的值。
3. 如果屏障计数器的值等于 N- 1(N 为进程总数),表示所有进程都已到达屏障点,可以继 续执行后续操作。
4. 如果屏障计数器的值小于 N- 1 ,表示还有其他进程未到达屏障点,当前进程需要等待。
5. 当一个进程到达屏障点时,它会将屏障计数器的值加 1。
6. 当屏障计数器的值达到 N- 1 时,表示所有进程都已到达屏障点,此时屏障被打破,所有 进程被同时释放,继续执行后续操作。
7. 所有进程继续执行后续操作,直到完成任务。
这个框图描述了 N 个进程通过屏障实现同步的基本流程,确保所有进程在达到屏障点之前 都会被阻塞,直到所有进程都到达屏障点后才能继续执行。