【问题标题】:Comparing two remote threads?比较两个远程线程?
【发布时间】:2013-07-13 19:08:51
【问题描述】:
我正在实现一个同步执行两个程序的应用程序。每个系统调用都是一个同步点。一个应用程序可能有多个线程,因此我需要明确地识别它们中的每一个,以便将第一个应用程序中的线程执行与第二个应用程序中相同线程的执行同步。
有没有办法识别两个远程线程是否正在执行相同的代码或函数?
欢迎提出任何建议!! :D
【问题讨论】:
标签:
c
linux
multithreading
multiprocessing
【解决方案1】:
嗯,很难说不知道您打算如何进行同步。这两个程序是否相互通信和/或第三个监控 pgm?
无论如何至少有3种可能性:
在匹配的两个程序(或第三个)中使用类似地图的关联容器
- 来自两个程序的 pthread 线程 ID(例如,
pthread_self() 获取 tid)
- Linux 线程 ID(例如
gettid())
或者您可以使用pthread_setname_np() 和pthread_getname_np()。您可以使用它们为两个程序中的每个线程赋予相同的名称,这在某些消息传递场景中可能会变得有用。如果您正在发送消息,您还可以将__FILE__、__LINE__ 和__FUNCTION__(c99 中的__func__)宏与线程名称结合使用。
这是我的(黑匣子)建议!