python使用互斥锁同步线程
2017-11-16 21:22
330 查看
#!/usr/bin/env python import threading import time class MyThread(threading.Thread): def run(self): global num time.sleep(1) num=num+1 msg=self.name+'set num to'+str(num) print msg num=0 def test(): for i in range(5): t=MyThread() t.start() if __name__=='__main__': test() ~
线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。
#创建锁
mutex = threading.Lock()
#锁定
mutex.acquire([timeout])
#释放
mutex.release()
#!/usr/bin/env python
import threading
import time
class MyThread(threading.Thread):
def run(self):
global num
time.sleep(1)
if mutex.acquire(1):
num=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()
if __name__=='__main__':
test()
相关文章推荐
- python多线程编程: 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- python多线程编程(2): 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- python多线程编程: 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- Python多线程编程(3): 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- python多线程编程(3): 使用互斥锁同步线程
- 线程间同步,条件变量,互斥锁的使用
- 转帖多线程编程使用互斥锁同步线程
- python多线程编程: 使用互斥锁同步线程
- [Linux线程]线程的同步--使用互斥锁完成线程同步
- 多线程编程(3): 使用互斥锁同步线程
- Java线程同步的使用
- Python多线程学习(一、线程的使用)
- 线程同步技术二:Mutex的使用
- 使用condition variable实现线程之间同步
- 多线程---使用ManualResetEvent来控制线程间的同步(实现了消费者和生产者模式)