2025-11-20 06:02:21
加锁就是给东西上锁不让别人用对吧?比如多人用电脑的时候要抢着用同一个打印机,得先按暂停键再操作。加锁的时候经常出现死锁问题,比如A和B两个程序同时要拿同一把锁,结果谁都不让谁,都卡住了。这样每次加锁都要等几秒钟,电脑就卡壳了。
加锁效率低是因为锁会拖慢整个系统。比如Linux内核统计显示,加锁操作平均占用0.1秒到3秒,相当于让CPU空转。数据库测试发现,加锁后每秒处理量从5000降到2000,降幅40%。这是因为加锁需要CPU检查权限、记录日志,还要切换线程,这些步骤都要消耗资源。比如拿数据库来说,每次加锁要查10个表的索引,就像找钥匙要跑遍整个房间。而且锁一开一关就像反复按开关,每次都要消耗0.5毫秒,100次操作就浪费了50毫秒。更糟的是,如果锁用错了地方,比如给整个数据库加锁,那所有操作都得等,就像把整个打印机锁起来,连装纸都做不了。所以现在很多系统改用乐观锁或者无锁设计,减少加锁次数,比如Redis用CAS操作,就少用了70%的加锁时间。不过这样也有风险,就像不锁门可能出问题,得看具体情况怎么平衡。
本题链接: