线程中的Semaphore理解
来源:互联网 发布:显示自己是阿里云的ip 编辑:程序博客网 时间:2024/05/01 12:34
一个Semaphore(信号量)就像一个夜总会一样:它有一个特定的capacity(容量),被一个保镖强制限制。一旦它满了,没有人能再进去,然后就在外面形成了一个等待的Queue(队列)。接着,一个人离开,Queue的首部的那个人进入。这种constructor(构造器)需要至少两个参数:夜总会中目前可用的位置和夜总会的capacity。
一个带着capacity的semaphore类似于一个Mutex(互斥量)或者lock(锁),只是semaphore没有“拥有者”,换言之,它是thread(线程)不可知的。任何一个thread可以基于semaphore调用释放,而基于Mutex和lock,只有包含了lock的thread才可以释放它。
有两个功能相似的类:Semaphore和SemaphoreSlim。后者在Framework4.0中有介绍并且被优化,达到并行程序中的low-latency(低延时)要求。它在传统的多线程中也很有用,因为它可以让你在等待的时候指定一个取消记号。然而,它不能用于进程间的信号发送。
Semaphore在调用WaitOne或者Release时需要1微妙;SemaphoreSlim只需要四分之一微秒。
Semaphore在限制并发性中很有用——防止太多的thread一起执行一个特定的代码段。在下面的例子当中,5个thread试图进入夜总会但是植被允许一次进入三个:
如果那个Sleep语句被代替执行集中的硬盘I/O(读写),Semaphore将通过限制过多并行的硬盘驱动处理活动改善执行效率。
一个Semaphore,一旦命名,则可以和一个Mutex一样跨越进程。
- 线程中的Semaphore理解
- 线程中的Semaphore学习,公共厕所排队策略
- 理解 Python 中的线程
- 理解 Python 中的线程
- 线程同步:旗语(Semaphore)
- 线程同步之semaphore
- Semaphore线程同步
- 线程同步----信号量(Semaphore)
- Java线程之Semaphore
- java线程之Semaphore
- 线程同步之Semaphore
- 线程同步----信号量(Semaphore)
- 线程同步--信号量Semaphore
- java线程 semaphore
- 线程同步工具-Semaphore
- 线程同步之Semaphore
- 理解Semaphore和Mutex
- 理解Semaphore和Mutex
- 用sax读取XML时不能读取换行符号后面的内容的问题
- sqrt引发的血案 牛顿法的应用
- C和指针小结前六章之第六章~指针
- AF_INET和PF_INET的区别
- 实训UML2 20110920
- 线程中的Semaphore理解
- 实验室管理的一些简单想法
- hadoop streaming 编程
- DBUtils
- fileupload验证文件
- 大牛们的blog (人工智能与机器学习)
- SQLServer 通过DMV实现低影响的自动监控和历史场景追溯
- 求解释!!!zoj3532 ZOJ Monthly, September 2011
- 2011.09.20-UNL(2)及rup的相关知识