推荐答案
测试一下
题目
关于线程,以下描述正确的是
A、disable语句可以提前结束所有线程
B、fork...join、fork... join_none、fork...join_any语句块都是以并发方式执行
C、fork...join_none内部的任意一个语句块执行完成之后,父线程才能继续执行
D、fork...join_any内部的所有语句块执行完成之后,父线程才能继续执行
参考答案与知识点
参考答案
正确答案为B。选项A错误,disable语句可以终止指定名称的块或任务(如begin...end或task),但它不能直接结束所有线程;若想结束所有线程,需使用disable fork或配合层次路径。选项B正确,fork...join、fork...join_none和fork...join_any都表示内部语句块以并发(并行)方式启动,区别在于父线程的阻塞行为。选项C错误,fork...join_none不阻塞父线程,父线程在fork语句后立即继续执行,内部子线程在后台运行。选项D错误,fork...join_any在任意一个子线程完成后便让父线程继续执行,而不是等待所有子线程完成。因此,只有B准确描述了并发执行的特性。
涉及知识点
- SystemVerilog线程并发机制
- fork...join系列的区别
- disable语句的作用与限制