#-*- encoding: gb2312 -*-
import string, threading, time
def thread_main(a):
global count, mutex
# 鑾峰緱綰跨▼鍚?/span>
threadname = threading.currentThread().getName()
for x in xrange(0, int(a)):
# 鍙栧緱閿?/span>
mutex.acquire()
count = count + 1
# 閲婃斁閿?/span>
mutex.release()
print threadname, x, count
time.sleep(1)
def main(num):
global count, mutex
threads = []
count = 1
# 鍒涘緩涓涓攣
mutex = threading.Lock()
# 鍏堝垱寤虹嚎紼嬪璞?/span>
for x in xrange(0, num):
threads.append(threading.Thread(target=thread_main, args=(10,)))
# 鍚姩鎵鏈夌嚎紼?/span>
for t in threads:
t.start()
# 涓葷嚎紼嬩腑絳夊緟鎵鏈夊瓙綰跨▼閫鍑?/span>
for t in threads:
t.join()
if __name__ == '__main__':
num = 4
# 鍒涘緩4涓嚎紼?/span>
main(4)
#-*- encoding: gb2312 -*-
import threading
import time
class Test(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self._run_num = num
def run(self):
global count, mutex
threadname = threading.currentThread().getName()
for x in xrange(0, int(self._run_num)):
mutex.acquire()
count = count + 1
mutex.release()
print threadname, x, count
time.sleep(1)
if __name__ == '__main__':
global count, mutex
threads = []
num = 4
count = 1
# 鍒涘緩閿?/span>
mutex = threading.Lock()
# 鍒涘緩綰跨▼瀵硅薄
for x in xrange(0, num):
threads.append(Test(10))
# 鍚姩綰跨▼
for t in threads:
t.start()
# 絳夊緟瀛愮嚎紼嬬粨鏉?/span>
for t in threads:
t.join()