码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-09-04 18:43:09      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   for   2014   art   div   

结合例子,就很好理解了。

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

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

bubuko.com,布布扣

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

标签:style   blog   http   color   ar   for   2014   art   div   

原文地址:http://www.cnblogs.com/aguncn/p/3956522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!