我正在創建一個實現搶先式循環調度程序的用戶級線程庫。我有這樣的處理函數:sighandler中的問題
void handler(int signum)
{
gtthread_yield();
}
在gtthread_yield中,我正在做上下文切換切換到下一個要執行的線程。該邏輯在大多數情況下工作正常。但是,即使在gtthread_yield函數(從sighandler調用)可以完成執行之前,信號仍然出現時,我會遇到分段錯誤。正因爲如此,我的訪問代碼(即我已經釋放的內存)無效的內存位置
有什麼辦法避免處理程序gtthread_yield功能執行完畢之前被提出?
由於
什麼gtthread_yield?是異步信號安全? – Kevin
不,它不是,它只是一個正常的功能 – CuriousCoder