首页 > 其他分享 >互斥锁

互斥锁

时间:2022-11-19 19:22:33浏览次数:37  
标签:__ encoding dic 互斥 json import

互斥锁理论

'''
多个线程同时要修改同一份数据,类似抢票等,
都需要用到互斥锁 虽然影响效率,但保证数据安全
'''


import json
from multiprocessing import Process
import time
import os
import random


# 查票
def search(i):
    # 读取票数
    with open('火车票','r',encoding='utf8')as f:
        dic = json.load(f)
    print(f'用户查询票数:{dic.get("ticket_num")}')

# 买票 1,先查 2,再买
def buy(i):
    with open('火车票','r',encoding='utf8')as f:
        dic = json.load(f)
    time.sleep(random.randint(1,3))
    # 判断当前是否有票
    if dic.get('ticket_num') > 0:
        dic['ticket_num'] -= 1
        with open('火车票','w',encoding='utf8')as f:
            json.dump(dic,f)
            print(f'用户:{i}购票成功')
    else:
        print(f'用户:{i}购票失败')

# 整合功能函数
def run(i):
    search(i)
    buy(i)

if __name__ == '__main__':
    for i in range(1,10):
        p = Process(target=run,args=(i,))
        p.start()

'''
多个进程 操作同一份数据的时候,会出现数据错乱的问题
针对上述问题,解决方式就是加锁处理
加锁可以将并发编程串行,牺牲了效率,保证了数据安全
互斥锁
'''

标签:__,encoding,dic,互斥,json,import
From: https://www.cnblogs.com/moongodnnn/p/16906820.html

相关文章

  • 同步与异步,阻塞与非阻塞,进程,互斥锁
    目录同步与异步,阻塞与非阻塞,进程,互斥锁今日内容概要今日内容详细同步与异步阻塞与非阻塞综合使用创建进程的多种方式进程间数据隔离进程的join方法IPC机制生产者消费者模型......
  • 进入python的世界_day34_网络编程——同步与异步、进程、消息队列、互斥锁
    一、同步与异步、阻塞与非阻塞1.同步与异步介绍​ 一种方式,可以用来表示提交任务方提交任务后的行为同步:好比去办车牌的时候,提交了资料就呆在大厅一动不动,等着审核结果......
  • 线程的同步与互斥
    生产者消费者问题编译指令gcc-opcpc.c-lpthread#include"csapp.h"#include<pthread.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<ti......
  • thread互斥测试
    thread互斥测试实践代码#include<stdio.h>#include<stdlib.h>#include<pthread.h>//linux线程库#include<ctype.h>//测试和映射字符的库structarg_se......
  • thread 互斥测试
    编译运行附件中的代码,并说明程序的功能根据自己的理解,提交不少于3张图片一、代码#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<ctype.h......
  • vue实现音频列表,播放互斥
    用了最暴力的方法,直接遍历。先判断是否是需要播放的音频,不是的话再判断它是否正在播放,是的话就关掉这条音频。没什么逻辑可言,但是不知道怎么控制这条音频关闭,花了点时间写......
  • 20201317-Linux-Thread 互斥测试
    #include<stdio.h>#include<stdlib.h>#include<pthread.h>//linux线程库#include<ctype.h>//测试和映射字符的库structarg_set{ char*fname; int......
  • thread互斥测试
    thread互斥测试#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<ctype.h>structarg_set{ char*fname; intcount;};structarg......
  • thread互斥测试
    题目要求编译运行附件中的代码,并说明程序的功能根据自己的理解,提交不少于3张图片代码#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<ct......
  • thread互斥测试
    thread互斥编译运行附件中的代码,并说明程序的功能根据自己的理解,提交不少于3张图片代码#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<......