PYTHON线程知识再研习C---线程互斥锁
2014-09-04 17:13
316 查看
结合例子,就很好理解了。
就是不要让共享变量被各个线程无序执行,导致结果不可预期
threading模块中定义了Lock类,可以方便的处理锁定:
其中,锁定方法acquire可以有一个超时时间的可选参数timeout。如果设定了timeout,则在超时后通过返回值可以判断是否得到了锁,从而可以进行一些其他的处理。
就是不要让共享变量被各个线程无序执行,导致结果不可预期
threading模块中定义了Lock类,可以方便的处理锁定:
#创建锁 mutex = threading.Lock() #锁定 mutex.acquire([timeout]) #释放 mutex.release()
其中,锁定方法acquire可以有一个超时时间的可选参数timeout。如果设定了timeout,则在超时后通过返回值可以判断是否得到了锁,从而可以进行一些其他的处理。
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time class MyThread(threading.Thread): def run(self): global num time.sleep(1) if mutex.acquire(1): num += 1 msg = self.name + ' set num to ' + str(num) print msg mutex.release() num = 0 mutex = threading.Lock() def test(): for i in range(5): t = MyThread() t.start() t.join() print 'ALL DONE' if __name__ == '__main__': test()
![](http://images.cnitblog.com/blog/465438/201409/041712280323907.png)
相关文章推荐
- PYTHON线程知识再研习D---可重入锁
- PYTHON线程知识再研习F---队列同步Queue
- PYTHON线程知识再研习A
- PYTHON线程知识再研习G--线程间通信Event
- PYTHON线程知识再研习E---条件变量同步Condition
- PYTHON线程知识再研习B
- 进程和线程的基础知识——Python学习笔记11
- Python能否实现超时,以及一些关于线程知识的复习
- c#重点知识详解(六:线程)
- 基础知识:进程和线程的区别
- 线程基础知识
- 线程基础知识
- Python: threading.local是全局变量但是它的值却在当前调用它的线程当中
- 线程基础知识
- c#重点知识详解(六:线程)
- c#重点知识详解(六:线程)
- 线程和进程基础知识(同步I/O)
- 线程的基础知识(转载自huntjap的专栏)
- 线程的基础知识
- 关于Python的线程