虽然线程并没有阻塞,也始终在运行(所以叫做“活”锁,线程是“活”的),但是程序却得不到进展,因为线程始终互相谦让,重复做同样的事
工程中的活锁实例:消息队列,消息如果处理失败,就放在队列开头重试,没阻塞程序无法继续
如何解决活锁问题
加入随机因素,以太网的指数退避算法
饥饿
当线程需要某些资源(例如CPU),但是却始终得不到,可能原因是饥饿线程的优先级过低
虽然线程并没有阻塞,也始终在运行(所以叫做“活”锁,线程是“活”的),但是程序却得不到进展,因为线程始终互相谦让,重复做同样的事
工程中的活锁实例:消息队列,消息如果处理失败,就放在队列开头重试,没阻塞程序无法继续
如何解决活锁问题
加入随机因素,以太网的指数退避算法
饥饿
当线程需要某些资源(例如CPU),但是却始终得不到,可能原因是饥饿线程的优先级过低
内容版权声明:除非注明,否则皆为本站原创文章。