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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 483|回复: 8

[求助] 并行起多个线程后如何等待他们都结束?

[复制链接]
发表于 2024-4-25 14:54:04 | 显示全部楼层 |阅读模式

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

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

x
fork
  for (int i=0 ; i<10; i++)begin
     fork
        automatic int j=i;
        task do_something;
     join_none
  end
join
如何等待同时挂起的11个task结束后再退出最外层的fork join呢?

发表于 2024-4-25 18:13:32 | 显示全部楼层
里面也用fork join呗
发表于 2024-4-26 18:50:31 | 显示全部楼层
如果必须里面用fork...join_none,那么这11个进程分别要给一个标志,然后第12个进程来统计是否收集到的标志有11个。
 楼主| 发表于 2024-4-27 12:14:43 | 显示全部楼层


wsser 发表于 2024-4-25 18:13
里面也用fork join呗


里面用的话就不能并行提起多个线程了
 楼主| 发表于 2024-4-27 12:18:47 | 显示全部楼层


gaurson 发表于 2024-4-26 18:50
如果必须里面用fork...join_none,那么这11个进程分别要给一个标志,然后第12个进程来统计是否收集到的标志 ...


给标志就不会了
这种写法应该用的挺多的吧,难道通常都是提起11进程后就直接往下执行了
发表于 2024-4-28 18:48:44 | 显示全部楼层
对,一般我都是用join_none丢到后台。我说的给标志,就是用一个变量来定义有几个进程结束了的统计值,或者是写一个queue来存0或者1,最后判断统计值是11或者队列里面有11个1.
发表于 2024-4-29 17:14:00 | 显示全部楼层
wait fork;  试一下
发表于 2024-4-30 08:59:12 | 显示全部楼层
1. wait cnt==xxx;肯定可以,我比较喜欢
2. semaphore; 跟进需要经常使用
3. wait fork:我基本不用,不确定有没有什么幺蛾子
4. process: 精确控制需要用到
5. 直接丢给uvm的phase机制管理
发表于 2024-5-7 17:30:38 | 显示全部楼层
简单粗暴一点,打平了写,不要用for循环
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 17:22 , Processed in 0.022054 second(s), 6 queries , Gzip On, Redis On.

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