悲观锁比较悲观,认为并发大概率导致冲突,所以要加锁防止并发。乐观锁比较乐观,认为并发小概率导致冲突,所以仅在提交更新时监测冲突。
悲观锁包括共享锁(读锁)和排它锁(写锁)。共享锁就是多个事务可以同时读某一资源,而排他锁意味着一个事务获得写权限时,其他事务只能等待。
而自旋锁是排它锁的一种实现。当线程获取锁而锁被其他线程占用的时候,线程不会发生状态转换,保持active的状态。自旋锁的优点是执行速度快,缺点是使用不当会导致CPU占用率高。此外,自旋锁还可以关注公平性和可重入性的问题。
悲观锁比较悲观,认为并发大概率导致冲突,所以要加锁防止并发。乐观锁比较乐观,认为并发小概率导致冲突,所以仅在提交更新时监测冲突。
悲观锁包括共享锁(读锁)和排它锁(写锁)。共享锁就是多个事务可以同时读某一资源,而排他锁意味着一个事务获得写权限时,其他事务只能等待。
而自旋锁是排它锁的一种实现。当线程获取锁而锁被其他线程占用的时候,线程不会发生状态转换,保持active的状态。自旋锁的优点是执行速度快,缺点是使用不当会导致CPU占用率高。此外,自旋锁还可以关注公平性和可重入性的问题。