笔记:路科V0第23节——线程的同步

28 篇文章 1 订阅
28 篇文章 4 订阅
本文解析了事件语句和旗语(semaphore)在多线程编程中的协作,展示了如何通过event和wait_order确保任务顺序执行,并介绍了如何使用semaphore进行资源访问控制。实例演示了线程间如何获取和释放共享资源,以避免资源冲突。
摘要由CSDN通过智能技术生成

​课程链接:https://www.bilibili.com/video/BV1k7411H7Jo?p=24
利用event语句可以实现各个事件之间相互配合:

首先声明两个新事件,接着把事件done赋值给done_too,这样done和done_too指向同一个事件,如果其中一个事件被触发,相当于同时触发了这两个事件。然后定义了一个trigger任务,作用是对事件event进行触发。接着看下面的第一个fork…join语句,语句里的@done_too表明这个线程会持续检测done_too信号是否被触发,直到触发之前都会占用仿真资源。而利用trigger任务去触发done也就相当于触发了done_too,从而让@done_too这个阻塞语句结束,避免了仿真资源的浪费。第二个fork…join语也是同理,wait语句表明在会对blast的触发状态进行检测,直到触发以前都会对仿真资源进行占用。线程先触发了blast事件,因此结束了wait语句,也避免了仿真资源的浪费。
由于使用的是wait_order,则只有abc三个任务都按顺序发生以后阻塞任务才会退出。如果没有按顺序发生,会使等待操作失败。可以像图片中一样使用else语句进行提示。

旗语(semaphore):由于多个线程同时进行,那么它们可能会对同一个资源进行访问、读取或者修改。为了保护资源不被破坏,需要对共享的资源进行访问控制。常见的方法是互斥访问保护。假如线程A和线程B都需要访问资源,那么旗语的作用就是保证在线程A访问资源的时候线程B无法访问,只有在A退出以后B才可以。
后面基本都是在讲这些语法了,为什么不搞一段程序分析一下各个进程都是怎么获得钥匙又是怎么返还钥匙的呢,一直在讲语法真的不太懂,还是去看绿皮书把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值