5.1.18 信号量

Posted beallaliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.1.18 信号量相关的知识,希望对你有一定的参考价值。

互斥锁和排斥锁  同一时间只能有一个线程处理同一段代码。比如,只有一个坑的卫生间

信号量:同时最多可以有N个线程同时处理同一段代码。 比如有3个坑的卫生间,最多可以有三个人同时使用。

 

from threading import Semaphore
from threading import Thread
import time


def task(name):
    sm.acquire()
    print(%s 正在占坑。。。 % name)
    time.sleep(2)
    sm.release()


if __name__ == __main__:
    sm = Semaphore(3)  # 有三个坑的锁 , 排斥锁和递归锁只有一个坑的锁
    # t_1 = []
    for i in range(10):
        t = Thread(target=task, args=(线程+str(i),))
        # t_1.append(t1)
        t.start()

运行结果:

技术分享图片
线程0 正在占坑。。。
线程1 正在占坑。。。
线程2 正在占坑。。。


线程3 正在占坑。。。
线程5 正在占坑。。。
线程4 正在占坑。。。


线程7 正在占坑。。。
线程8 正在占坑。。。
线程6 正在占坑。。。

线程9 正在占坑。。。

Process finished with exit code 0
View Code

 

以上是关于5.1.18 信号量的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图片段显示,但没有地图

窗函数介绍

谱分析中窗的选取

Android MediaPlayer AudioStream AudioFlinger 服务器死机!,致命信号 11

傅里叶变换滤波之生物信号滤波(笔记03)

Android webview 崩溃“致命信号 5 (SIGTRAP)”