mutexs

package
v1.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2022 License: MulanPSL-2.0 Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Locker added in v1.7.0

type Locker interface {
	Lock(callback func())
}

一种锁.可以锁住资源后调用callback.调用完成后解锁.

type Mutex

type Mutex struct {
	// contains filtered or unexported fields
}

为什么sync库只有互斥锁,没有读写锁呢? 没有可以共享读的锁,这个不太常用.现在遇到的工程中加锁冲突的概率非常小. 一旦疏忽在改代码的时候读取过程塞进去了一个写动作就有危险了.而且通常这种危险很难debug 再提醒自己一次:cpu高效内存高效都不是经济高效.代码安全简洁才是经济高效 测试放弃共享读锁,无脑互斥 为什么sync库只有互斥锁,没有读写锁呢? 难道这就是答案?

func (*Mutex) Lock added in v1.7.0

func (mutex *Mutex) Lock(callback func())

独占执行callback.这个函数略有性能损失,但是完全规避了忘了开锁的风险. 3.4GHz的cpu在1.18下测试每次使用闭包损失4ns性能,相当于12个周期.这个性能可以接受. 再提醒自己一次:cpu高效内存高效都不是经济高效.代码安全简洁才是经济高效.改变这种强迫症,你可以的. defer可以保证callback中即使panic也不会死锁. callback为nil会发生panic

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL