问题描述
我正在尝试用两个 pintools 同步两个进程,其中一个进行检测,另一个工具对检测数据进行一些处理。我正在尝试使用 2-semaphores 的典型解决方案来解决它。一个使用两个 PIN_semaphore 初始化为 1 ,另一个为 0 。但面临一些问题:
Tool-1:在 Ist 工具中,它分析了一个应用程序,这个函数在每条指令的分析例程中被调用:
if(Some_condition)
{
PIN_SemaphoreWait(&Sem2);
cout<<"\nINSIDE sem-child\n";
//some-code
cout<<"\nPassing to Trace-Server\n";
PIN_SemaphoreSet(&Sem1);
}
Tool-2:是第二个工具的一部分,它不分析任何应用程序,但使用 Pin 框架......并且给定的代码从 main 调用并始终运行。
while(1)
{
PIN_SemaphoreWait(&Sem1);
cout<<"\nINSIDE sem-parent\n";
//some-code
PIN_SemaphoreSet(&Sem2);
}
sem1 最初未设置,sem2 最初使用 Pin_SemaphoreSet 设置。
我先运行Tool-2工具,然后再启动工具,-1 我面临的问题是,即使在 Tool-1 在 sem1 上发送 SemaphoreSet 信号之后,这里的 Tool-2 也始终处于阻塞状态……因为 Tool-1 从未在 sem2 上的 SemaphoreWait 处阻塞(现在它不会阻塞为sem2 最初是设置的,但它应该在下次不做的时候阻塞)
Pin_Sempahore 是否有任何限制,或者我以错误的方式进行操作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)