簡體   English   中英

如何向C中的線程發送信號?

[英]How sending a signal to a thread in c?

1-發送unix信號僅適用於進程,或者也可以將信號發送至線程?

2-是否可以將線程的tid發送到內核模塊? 怎么樣?

3-內核模塊可以通過什么方式找到線程的tid,以發送信號?

4-線程將具有一個將在每個信號上運行的處理程序。 如果每個處理程序都對應一個信號,是否存在競爭條件? 可以將信號傳達給所有線程嗎? 如果所有人一次都訪問處理程序,會發生什么情況?

Ad.1您想從哪里發送信號? 您可以使用kill()將信號發送到進程,使用pthread_kill()將其發送到線程(但僅從創建線程的進程中發送)。

Ad.3。 在處理一個信號時,其他未決信號將排隊,因此不會出現爭用條件。 但是您需要將處理程序中使用的非局部變量設置為原子(因此,當中斷發生時,此變量將不會被中斷),並檢查哪些函數對處理程序安全。

關於信號和線程-信號通常直接進入進程(只有使用pthread_kill您才能從用戶空間向線程發送信號)。 如果您有多線程進程,並且沒有線程阻止此信號,那么信號將進入隨機線程(當信號到來時,該線程才在運行)。 如果您阻塞除一個線程外的所有線程,那么信號將僅到達該線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM