在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 112|回复: 5

[求助] sv中fork...join_none

[复制链接]
发表于 昨天 10:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 xiuxing056 于 2025-3-8 19:23 编辑

fork

      while (1) begin
             do_response();
      end
join_none
le_conn_op.transcieve(this);
wait(p_sequencer.vif.int);

如上,transcieve执行完成后, 任务do_response就不再执行了,导致中断不能清掉,什么原因?
下面这种写法又可以。

fork

      while (1) begin
             do_response();
      end
     le_conn_op.transcieve(this);
join_any
wait(p_sequencer.vif.int);

发表于 昨天 16:11 | 显示全部楼层
你下面这种写法,fork-join_none中是串行执行的,le_conn_op.transcieve(this)都执行不到吧
发表于 昨天 16:13 | 显示全部楼层
你下面这段代码,fork-join_none中是串行执行的,le_conn_op.transcieve(this)这句都执行不到吧?一直在做while(1)中的动作。
 楼主| 发表于 昨天 19:23 | 显示全部楼层
第二种写法用的是fork join_any,不是fork join_none
 楼主| 发表于 12 小时前 | 显示全部楼层


Xunuoo 发表于 2025-3-8 16:11
你下面这种写法,fork-join_none中是串行执行的,le_conn_op.transcieve(this)都执行不到吧 ...


可以的,是和while并行执行的
发表于 12 小时前 | 显示全部楼层


xiuxing056 发表于 2025-3-8 19:23
第二种写法用的是fork join_any,不是fork join_none


抱歉,看错了。

第二段能够成功满足你要求的原因是,fork-join_any中任意一个子任务完成之后,程序就不会block在fork-join_any了,而是会继续往下执行,但是原来没有完成成的子任务不会被终止,而是会继续在后台运行
至于第一段程序为啥在你le_conn_op.transcieve(this)执行完后while(1)中的进程被kill,我也感到很疑惑,是不是你在transcieve()中做了什么特殊处理?
如果问题有解了,麻烦告知我一下,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-3-9 22:31 , Processed in 0.019274 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表