2011-03-31 111 views
10
  1. 在unix中,如果一個多線程進程發送了一個信號,哪個線程將執行處理函數呢?多線程信號處理

  2. 如果它是一個多cpu機器,則多個線程同時運行。哪個線程將運行信號處理函數?

回答

9

根據man 7 signal,在這個過程中共享的所有線程相同的信號處理程序,並且如果信號被傳遞到與未阻塞信號的多個線程的方法,它們中的一個任意選擇接收它。

擁有多CPU機器不會改變這些語義。