我正在实现一个同步执行两个程序的应用程序。每个系统调用都是一个同步点。一个应用程序可能有多个线程,因此我需要明确地识别每个线程,以便将第一个应用程序中线程的执行与第二个应用程序中同一线程的执行同步。
有没有办法识别两个远程线程是否正在执行相同的代码或函数?
欢迎提出任何建议! :D
最佳答案
好吧,很难说不知道您打算如何进行此同步。这两个程序是否相互通信和/或第三个监视 pgm?
无论如何,至少有 3 种可能性:
在匹配的两个程序(或第三个程序)中使用像 map 这样的关联容器
- 来自两个程序的 pthread 线程 ID(例如,使用
pthread_self()
获取 TID) - Linux 线程 ID(例如
gettid()
)
或者您可以使用pthread_setname_np()
和pthread_getname_np()
。您可以使用它们为两个程序中的每个线程指定相同的名称,这可能在某些消息传递场景中变得有用。您还可以将 __FILE__
、__LINE__
和 __FUNCTION__
(c99 中的 __func__
)宏与如果您正在发送消息,则线程名称。
这是我的(黑匣子)建议!
关于比较两个远程线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633334/