您的位置  > 互联网

荷兰工程师须知:信号量S的PV操作及申请

信号量对象同步线程的方式与之前的方法不同。 信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。 它表示可以同时访问共享资源的最大线程数。 它允许多个线程同时访问同一个资源,但需要限制可以同时访问该资源的最大线程数。 当使用()创建信号量时,必须同时指明允许的最大资源计数和当前可用的资源计数。 一般情况下,当前可用资源数设置为最大资源数。 每增加一个线程访问共享资源,当前可用资源计数就会减1。只要当前可用资源计数大于0,就可以发送信号量信号。 但是,当当前可用计数减少到0时,则表示当前占用资源的线程数量已达到允许的最大数量,不能允许其他线程进入。 此时,信号量信号将不会被发送。 线程处理完共享资源后,离开时应通过()函数将当前可用资源计数加1。 当前可用资源计数在任何时候都不能大于最大资源计数。

光伏运行和信号量的概念是由荷兰科学家EW提出的。 信号量S是一个整数。 当S大于或等于0时,表示可供并发进程使用的资源实体的数量。 然而,当S小于零时,它代表等待使用共享资源的进程数。

P操作申请资源:

(1) S减1;

(2)如果S减1后仍然大于等于0,则继续执行;

(3) 如果S减1后小于0,则进程将被阻塞,进入信号对应的队列,然后转入进程调度。

V操作释放资源:

(1)S加1;

(2)如果加法结果大于零,则流程继续执行;

(3) 如果加法结果小于等于0,则从信号的等待队列中唤醒一个等待进程,然后返回原进程继续执行或转入进程调度。

信号量包含几个操作原语:

()创建信号量

() 打开信号量

() 释放信号量

() 等待信号量