非阻塞数据结构
阻塞的算法和数据结构使用mutex, condition_variable,future来同步数据,但非阻塞并不等同于 lock-free。
比如第五章提到的自旋锁没有使用阻塞函数的调用,是非阻塞的,但并非是 lock-free.
- 阻塞线程:
- 线程因为等待某个事件而被暂时挂起,无法执行。
- 阻塞可能导致系统性能问题,因为线程需要等待资源或其他线程的操作完成。
- 饥饿线程:
- 线程无法获得所需资源,导致长时间等待。
- 当等待时间对进程的推进和响应产生明显影响时,称为进程饥饿。
阻塞的算法和数据结构使用mutex, condition_variable,future来同步数据,但非阻塞并不等同于 lock-free。
比如第五章提到的自旋锁没有使用阻塞函数的调用,是非阻塞的,但并非是 lock-free.