请问下rt_completion_wait函数里面将线程加入挂起链表,
但是在rt_completion_done函数处理完没看到移除,
这样链表不会变得越来越长吗?
完成量不支持某个线程尚未唤醒的时候,其他线程调用wait。
把它看作单对单的轻量二值信号量是没有问题的。但是,多对一的情况是不适用的。
文档中心提到:
完成量不支持在某个线程中调用 rt_completion_wait,还未唤醒退出时,在另一个线程中调用该函数。
考虑如下场景:
所以,链表不会越来越长
。
如下是一段测试代码,尝试把thread2_entry中的rt_completion_done和rt_completion_wait互斥屏蔽
。
你会发现,thread2也在wait时,触发断言进入死循环了。thread2使用done时,是完成量的一般使用方式。