线程进入阻塞状态的开销很大,应当尽量避免进入阻塞状态
其实很多时候,共享数据只会被锁定很短一段时间
自旋锁的思想就是让线程在请求一个被锁定的共享数据时,不进入需要很大开销的阻塞状态,而是执行忙循环(也就是自旋)一段时间,如果在执行忙循环的时候,能够获得共享数据的锁,就不用进入阻塞状态了
执行忙循环(自旋)需要占用CPU时间,所以自旋锁只适用于共享数据被锁定的时间很短的场景
线程进入阻塞状态的开销很大,应当尽量避免进入阻塞状态
其实很多时候,共享数据只会被锁定很短一段时间
自旋锁的思想就是让线程在请求一个被锁定的共享数据时,不进入需要很大开销的阻塞状态,而是执行忙循环(也就是自旋)一段时间,如果在执行忙循环的时候,能够获得共享数据的锁,就不用进入阻塞状态了
执行忙循环(自旋)需要占用CPU时间,所以自旋锁只适用于共享数据被锁定的时间很短的场景