抢占式调度中信号处理函数如何判断当前是否在执行调度?

forxy · · 1614 次点击
如果用c实现,可以有两种方法: 1. 通过backtrace 来判断,这两者的调用栈是不一样的; 2. 设置协程和线程堆栈时,通过mmap分配堆栈内存,让它们的地址隔开,在信号不理函数中,通过上下文的rsp寄存器来判断。
#2
更多评论
我觉得就算是抢占也有规则的, 1.不是说什么地方都可以被抢. 2.被抢占的断点是可以被栈保护起来的, 肯定有这个机制完成协程的现场保护
#1