python锁机制_关于Python中锁的理解(二)

这不是经验分享帖,也不是什么教学帖(没资格),这应该算是笔记帖,原因如下:

对于一个非计算机科班的人,“锁”这个东西有点难理解,而且与锁有关的知识点太多了,多线程、多进程、同步、消费者与生产者模式、队列等等......,为了彻底搞明白这个锁到底是啥,在中国大学网站上听了几节计算机操作系统中关于并发控制的课程,至今都还是觉得云山雾里...,算了,理解多少算多少,写在这里,希望能和看到的人交流交流....

临界资源:多个进程或者线程共享的资源称为临界资源

临界区:进程或者线程中访问临界资源的代码块称为临界区

为了完成多个线程对临界资源的互斥使用,设置整型变量为flag,0代表临界资源可用,1代表临界资源不可用;那在代码进入临界区前,首先判断这个整型变量flag的值,如果为0,代表这个资源处于空闲状态,将flag置为1,表示临界资源已经被征用,其他的线程将不能够使用临界资源,该临界区的代码执行,待该线程临界区代码执行完成后,再将flag置为0,表示其他的线程可以使用临界资源了;

如果为1,代表这个资源被其他的临界区代码占用着,该临界区的代码不能被执行;

为了保证代码能够在不允许进入临界区的时候,暂停后面的语句执行,引入while语句。

利用Python代码表述:

由于操作系统的中断机制,在t1中执行if flag=0时,发生中断,CPU执行t2了,这就导致两个线程能够同时执行临界区代码,为了能够实现互斥,将整个while语句封装成一个函数,实现系统级别的原子操作,即锁原语,那么锁的底层机制应该就是这样的了(本人的理解)

可以看到,当t1执行临界区代码时,如果轮到t2执行了,在进入临界区之前,会一直判断临界区资源是否可用(while循环),使该线程处于忙等(busy-waiting)的状态,白白浪费CPU资源。

参考:计算机操作系统_中国大学MOOC(慕课)​www.icourse163.org

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值