微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生产者-消费者使用 Pin_Semaphore intel pintool API

如何解决生产者-消费者使用 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?