如何解决生产者-消费者使用 Pin_Semaphore intel pintool API
我正在尝试用两个 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 举报,一经查实,本站将立刻删除。