目录
2、当一个进程或线程想要使用该资源时,需要调用wait操作来获取该资源的信号量。
3、当一个进程或线程使用完该资源后,需要调用signal操作来释放该资源的信号量,使得其它进程或线程可以使用该资源。
信号量机制是一种同步机制,用于协调多个进程或线程之间的访问资源。信号量通过计数器的方式来维护特定资源的可用性或被占用数目。
信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量。
比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。
用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。
当信号量的值大于0时,表示资源可用;
当信号量的值为0时,表示资源被占用。
如果信号量的值大于0,表示资源可用,该进程或线程可以使用该资源,并将信号量减1。
如果信号量的值为0,表示资源被占用,该进程或线程需要等待,直到信号量的值变为大于0,表示资源释放了。
同时,调用signal操作会将信号量的值加1。
信号量机制可以用于解决多个进程或线程之间的竞争问题,例如多个进程或线程同时访问一个文件,可以使用信号量机制来保证每个进程或线程都能够有序访问该文件,避免文件损坏或数据丢失。
进程在申请资源时,若信号量小于等于0,则调用block进入堵塞态;
当进程释放资源时,信号量加一,并且调用wakeup唤醒阻塞队列的对头元素。