悲观锁通过在执行关键操作前取得排他或共享访问权,约束其他并发操作对相同资源的访问。
数据库中的使用
典型流程是在事务中 SELECT ... FOR UPDATE,读取后按规则修改,再提交或回滚。锁持有范围和兼容关系取决于数据库、语句及访问路径。
选择与限制
它适合需要明确串行化某段记录操作的场景,但会带来等待和死锁风险。应缩短持锁区间,避免等待用户输入或外部服务,且所有竞争路径必须遵守同一数据保护规则。
进程内互斥锁通常只能协调该进程;多实例场景若共享数据库,不能依靠各实例独立的内存锁保证全局互斥。