mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 在一个资源池中。获取资源
# Author: zhang
# Date: 2015-7-27

import time
import os
import threading

# 其它的一些可加入操作,这里为休眠
def doSomething():
    time.sleep(1)

# 获取资源
def getResource(threadid):
    global i
    global lock
    
    while True:
        lock.acquire() #  上锁
        if i != 0:
            i = i-1
            print('the current thread id is ',threadid)
            print('the current left resource is ',i)
        else:
            print('the left resource is none')
            os._exit(0)

        lock.release()
        doSomething()

i =  20 # 资源数量
lock = threading.Lock()

# 创建多个线程
for k in range(10):
    child_thread = threading.Thread(target=getResource,args=(k,))
    child_thread.start()




样例中有一个共同的资源池,利用多线程获取当中的资源。但要保证数据的同步,即在某一次获取过程中,仅有一个线程能够对资源池进行操作。





posted on 2017-05-16 17:19  mthoutai  阅读(278)  评论(0编辑  收藏  举报