您的位置:首页 > 编程语言 > Python开发

PYTHON线程知识再研习C---线程互斥锁

2014-09-04 17:13 316 查看
结合例子,就很好理解了。

就是不要让共享变量被各个线程无序执行,导致结果不可预期

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()


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: