package
Version:
v1.8.1
Opens a new window with list of versions in this module.
Published: Jul 29, 2022
License: MulanPSL-2.0
Opens a new window with license information.
Imports: 1
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
Documentation
¶
type Locker interface {
Lock(callback func())
}
一种锁.可以锁住资源后调用callback.调用完成后解锁.
为什么sync库只有互斥锁,没有读写锁呢?
没有可以共享读的锁,这个不太常用.现在遇到的工程中加锁冲突的概率非常小.
一旦疏忽在改代码的时候读取过程塞进去了一个写动作就有危险了.而且通常这种危险很难debug
再提醒自己一次:cpu高效内存高效都不是经济高效.代码安全简洁才是经济高效
测试放弃共享读锁,无脑互斥
为什么sync库只有互斥锁,没有读写锁呢?
难道这就是答案?
func (mutex *Mutex) Lock(callback func())
独占执行callback.这个函数略有性能损失,但是完全规避了忘了开锁的风险.
3.4GHz的cpu在1.18下测试每次使用闭包损失4ns性能,相当于12个周期.这个性能可以接受.
再提醒自己一次:cpu高效内存高效都不是经济高效.代码安全简洁才是经济高效.改变这种强迫症,你可以的.
defer可以保证callback中即使panic也不会死锁.
callback为nil会发生panic
Source Files
¶
Click to show internal directories.
Click to hide internal directories.