Bootstrap

scheduling while atomic 报错解决

笔者在项目开发过程中遇到如下问题:
报错信息

理论解释

“scheduling while atomic”

这是一个常见的编程概念,它指的是在原子操作中进行调度或处理任务。原子操作是指在执行期间不能被中断的操作。

在多线程或并发编程中,当一个线程正在执行原子操作期间,另一个线程通常不能进行调度,即不能在原子操作期间对该线程进行上下文切换。这是为了确保原子操作能够正确和完整地执行,避免出现数据竞争等问题。

如果在执行原子操作期间进行调度,可能会破坏原子性,导致数据一致性问题或其他异常。因此,编程的时候需要特别注意避免在原子操作中进行调度。

自旋锁

此处保存链接: 自旋锁详细解释

问题原因

结合起来,简单来说,就是自旋锁启动和释放过程中,应该保证整个过程是原子操作(即不可被中断),笔者的项目在启动自旋锁后,进行了写文件操作,写文件需要启动线程,于是无法保证自旋锁完整的执行,被写文件操作中断。

解决办法

定位到问题原因就非常好解决了,只需要在写文件之前释放自旋锁即可。

结论

对操作系统有了实践性的了解,对于原子操作,自旋锁,互斥锁等原理的理解更深入。

;