嵌入式技术论坛
直播中

张强

7年用户 1300经验值
私信 关注
[问答]

若我想通过第一个线程rt_event_send发送事件来挂起第二个线程应该怎样做

请教各位大佬,求助!!!

1、项目中线程间同步利用event,比如第一个线程rt_event_send(event,event_flag5),来唤醒第二个线程,唤醒后第二个线程就可以一直跑了。但是若我想通过第一个线程发送事件来挂起第二个线程,应该怎样做?

2、同一个.c文件中利用event唤醒没问题,但发现若两个线程分别在不同的.c文件中,那么event唤醒就不好用了,也就是rt_event_send执行了,但是第二个线程中接收不到。

感谢各位大佬帮忙解答一下上面的问题!

回帖(5)

王燕

2022-8-3 10:27:59
1、可以用rt_thread_delay()挂起
2、
1.jpg
举报

h1654155275.5669

2022-8-3 10:28:10
RT_EVENT_FALG_CLEAR是第二个线程只能运行一个循环的意思吗?
假如用第一个线程控制第二个线程何时唤醒和何时挂起呢?
我这边调试不方便,所以没看出结果
举报

刘涛

2022-8-3 10:28:26
一直跑?没有 while (1)?
0 等待 EVENT 嘛。超时就继续狂奔,有 EVENT 就判断是什么 EVENT ,根据 EVENT 去继续狂奔或者睡眠自己
举报

张强

2022-8-3 10:28:37
1.jpg
运行thread1中的发送事件语句,设备就死机,您帮忙看看是哪里的问题
举报

王燕

2022-8-3 10:28:53
是死机吗?应该是一直在while(1)里执行100ms延时吧
举报

更多回帖

发帖
×
20
完善资料,
赚取积分