一尘不染

如何随时暂停pthread?

linux

最近,我开始将ucos-ii移植到Ubuntu PC。

众所周知,在ucos-ii中无法通过在pthread的回调函数中的“
while”循环中添加一个标记来执行暂停和恢复来模拟“进程”,以执行暂停和恢复操作(类似于下面的解决方案)。因为ucos-
ii中的“进程”可以随时暂停或恢复!

我在下面的网站上找到了一种解决方案,但是由于过时而无法构建。它使用Linux中的进程来模拟ucos-ii中的任务(行为类似于我们Linux中的进程)。

如果pthread可以像可以随时暂停和恢复的进程那样工作,请告诉我一些相关功能,我自己可以解决。如果不能,我认为我应该专注于较旧的解决方案。非常感谢。


阅读 465

收藏
2020-06-03

共1个答案

一尘不染

如果使用条件变量在特定点处停止是不够的,那么您不能使用pthreads做到这一点。pthread接口不包括暂停/继续功能。

参见,例如,在此处回答E.4 :

POSIX标准没有提供任何机制,线程A可以通过这种机制来暂停另一个线程B的执行,而无需B的配合。实现暂停/重新启动机制的唯一方法是让B定期检查某个全局变量是否有暂停请求,然后将其自身挂在条件变量上,其他线程稍后可以发出信号通知重启B。

常见问题解答的答案继续描述了几种非标准的实现方式,一种在Solaris中,一种在LinuxThreads中(现在已过时;不要将其与Linux上的当前线程混淆)。这些都不适合您的情况。

2020-06-03