zoukankan      html  css  js  c++  java
  • Day11 进程相关

    互斥锁的原理及案例分析

    速度  内存/磁盘

    安全  互斥锁

    互斥锁与CPU调度的区别

    jion模拟抢票

    # 互斥锁的原理:就是将多个任务对共享数据修改操作由并发变成”串行“,牺牲了效率保证数据安全
    
    from multiprocessing import Process,Lock
    import json
    import time,random
    
    def search(i):
        with open('db.json','rt',encoding='utf-8') as f:
            dic=json.load(f)
            time.sleep(1)
            print('路人%s查看到剩余票数:%s' %(i,dic['count']))
    
    def get(i):
        with open('db.json','rt',encoding='utf-8') as f:
            dic=json.load(f)
        if dic['count'] > 0:
            # 有票
            dic['count']-=1
            time.sleep(random.randint(1,3))
            with open('db.json','wt',encoding='utf-8') as f:
                json.dump(dic,f)
                print('路人%s抢票成功' % i)
    
        else:
            print('路人%s抢票失败' %i)
    
    
    def task(i,mutex):
        search(i)
        mutex.acquire()
        get(i)
        mutex.release()
    
    if __name__ == '__main__':
        mutex = Lock()
    
        for i in range(1,11):
            p=Process(target=task,args=(i,mutex))
            p.start()
            # p.join()
    
        print('')
    互斥锁模拟抢票

     生产者与消费者模型

    什么是生产者消费者?

    为什么用生产者消费者?

    怎么用生产者消费者?

    生产者与消费者模型的案例

    生产者与消费者模型的bug

    生产者与消费者模型与守护线程的结合

    线程

     

  • 相关阅读:
    最短路径----SPFA算法
    POJ --3009
    求解n位格雷码
    leetcode66- Plus One- easy
    leetcode305- Number of Islands II- hard
    leetcode146- LRU Cache- hard
    leetcode284- Peeking Iterator- medium
    leetcode734- Sentence Similarity- easy
    leetcode399- Evaluate Division- medium
    leetcode20- Valid Parentheses- easy
  • 原文地址:https://www.cnblogs.com/swiki/p/9613030.html
Copyright © 2011-2022 走看看