【SystemVerilog 之 线程与通信】~ 线程的使用、线程的控制、线程间的通信
2023-09-14 09:10:01 时间
1. 线程的使用
1.1 程序和模块
1.2 什么是线程?
1.3 线程小结
1.4 练习
答案:ABC
解析:D错误,initial中线程不一定会结束,要看initial块中的语句是什么。
答案:ABCD
2. 线程的控制
2.1 fork并行线程语句块
如上图所示,fork并行线程语句块有2种方式,分别为fork…join, fork…join_any, fork…join_none。下面我们分别说一下各自的功能:
- fork…join:表示T1,2,3并行执行,直到所有的T都执行完成之后,结束。
- fork…join_any:表示T1,2,3并行执行,只要其中有一个完成了,那就可以结束了,但是需要注意的是,其他没有执行完成的T依然可以继续执行。
- fork…join_none:表示T1,2,3并行执行,不管T有没有用执行完成,我都不管了。相当于起到一个“点火”的作用,点着了就跑了!!!
2.1.1 fork…join
2.1.2 fork…join_any
2.1.3 fork…join_none
2.1.4 小练习
答案:A
2.2 等待所有衍生线程
2.3 停止单个线程
2.4 停止多个线程
2.5 停止被多次调用的任务
3. 线程间的通信
3.1 概述
3.2 event事件
3.2.1 举例验证
3.2.2 小练习
答案:BC
解析:考察event触发知识点:@表示可以多次等待事件触发;而.triggered()表示只要有一次事件触发,就会一直满足,不会被阻塞了。
3.3 semaphore旗语
3.3.1 基本操作
3.3.2 为什么要资源共享?
结果:
3.3.3 升级操作
之前我们资源共享的时候可以任意时候归还钥匙,比如原来初始化只有一把钥匙,丈夫还了一把,恰巧妻子也还了一把,那此时不就有2把钥匙了吗?问题是我们不是只有一把吗?出大问题了!!!下边引入管家帮我管理。
3.3.4 小练习
答案:ABCD
3.4 mailbox信箱
3.4.1 基本使用
3.4.2 需求在哪了?举例
3.4.3 替代方案
3.4.4 通过上边两个方案总结
3.4.5 mailbox其他特性
3.4.5.1 event同步
3.4.5.2 semaphore同步
3.4.5.3 mailbox同步
3.4.5.4 结果分析
3.4.6 小练习
答案:ABCD
答案:BC
解析:队列不需要初始化(例化);队列不能赋值传递,需要引用传递ref。
3.5 通信要素的比较
相关文章
- 海量单细胞测序技术在CAR-T细胞治疗产品质量控制中的应用
- 【说站】python控制语句的两大分类
- 【IOC 控制反转】IOC 简介 ( 依赖注入的两种实现方式 | 编译期注入 | 运行期注入 )
- elasticsearch6 学习之并发控制详解程序员
- JavaScript控制输入框中只能输入中文、数字和英文详解编程语言
- 远程控制Linux服务器:快速关机(远程关闭linux服务器)
- load-on-startup元素:控制Servlet启动优先级
- 控制Linux下线程控制优化实践(linux下的线程)
- Systemctl控制和管理服务
- 利用Linux系统实现四轴飞行控制(Linux四轴)
- MySQL中简单使用日期格式实现时间控制(mysql 中日期格式)
- 精准掌控Oracle 控制语句学习指南(oracle中的控制语句)
- Redis队列控制超买超卖走向(redis队列超买超卖)
- 灵活控制Redis 调整内存大小(redis设置内存多大)
- Win2008远程控制安全设置技巧
- C#线程执行超时处理与并发线程数控制实例
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记