【问题标题】:what is impact if i call syscall(SYS_gettid) from signal Handler?如果我从信号处理程序调用 syscall(SYS_gettid) 会有什么影响?
【发布时间】:2012-02-01 13:25:11
【问题描述】:

有人能告诉我从 Signal Handler 调用 syscall(SYS_gettid) 会产生什么不利影响吗? 我知道它不在要从信号处理程序调用的安全函数列表中,但我想知道它背后的原因?

【问题讨论】:

    标签: thread-safety system-calls signal-handling


    【解决方案1】:

    我很确定这与可重入的信号处理程序方法有关。假设发送了一个信号,并且您的处理程序获取该信号并开始处理。在处理过程中,并发程序可能会发送另一个信号,您的处理程序会再次抓取该信号并开始处理它。

    根据调度的结果,有可能同一块代码,即信号处理程序,在其自己的执行过程中执行。问题是它使用相同的指针和变量,所以它可能会损坏自己,特别是因为 gettid() 返回当前线程的 ID。在这种情况下,当前线程是哪个?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多