zoukankan      html  css  js  c++  java
  • python 多线程中同步的小样例

    #!/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()
    
    
    
    

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





  • 相关阅读:
    java输出菱型
    java----内部类
    java中的多重继承
    java算法--三个数字比较大小
    Python基础(2)
    Python基础(1)
    Redis主从同步
    一种高效的进程间的通信方式
    自旋锁和互斥锁的区别
    Linux读写锁的使用
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6862408.html
Copyright © 2011-2022 走看看