3
我在vxworks手冊中發現了以下內容,並想知道爲什麼會出現這種情況。Linux/vxworks信號
信號做什麼類型的事情使他們不受歡迎?
在實際應用中,信號是 最適合用於錯誤和異常處理 ,而不是一個 通用任務間通信 。
我在vxworks手冊中發現了以下內容,並想知道爲什麼會出現這種情況。Linux/vxworks信號
信號做什麼類型的事情使他們不受歡迎?
在實際應用中,信號是 最適合用於錯誤和異常處理 ,而不是一個 通用任務間通信 。
與信號的主要問題是處理程序是基於每個進程/內存空間基礎註冊的信號(在VxWorks中,內核表示一個存儲器空間,並且每個RTP是不同的存儲器空間)。
這意味着無論線程/任務上下文如何,都會執行相同的信號處理程序(對於給定的進程)。如果您的信號處理程序表現不好,這可能會導致一些副作用問題。
例如,如果你的信號使用一個互斥體的保護共享資源,這可能會導致討厭的問題,或者至少,意外的行爲
Task A Task B Signal Handler Take Mutex ... Gets preempted does something .... <SIGNAL ARRIVES>----->Take Mutex (blocks) resumes .... Give Mutex ----->Resumes Handler
我不知道上面的例子中真正傳達了我正在努力。 以下是信號的一些其他特性:
請注意,以上僅適用於通過kill調用發送的異步信號。
異常會產生一個同步信號,在當前上下文中馬上執行。