我正在创建一个实现抢先式循环调度程序的用户级线程库。我有这样的处理函数:sighandler中的问题
void handler(int signum)
{
gtthread_yield();
}
在gtthread_yield中,我正在做上下文切换切换到下一个要执行的线程。该逻辑在大多数情况下工作正常。但是,即使在gtthread_yield函数(从sighandler调用)可以完成执行之前,信号仍然出现时,我会遇到分段错误。正因为如此,我的访问代码(即我已经释放的内存)无效的内存位置
有什么办法避免处理程序gtthread_yield功能执行完毕之前被提出?
由于
什么gtthread_yield?是异步信号安全? – Kevin
不,它不是,它只是一个正常的功能 – CuriousCoder