golang sync包学习

//package sync 
/*
  sync包提供了基本的同步基元 如互斥锁
  除了Once和WaitGroup类型
  大部分都是适用于低水平程序线程
  高水平的同步使用channel通信更好一些
  本包的类型值不应该被拷贝
*/
type Locker interface{
   Lock()
   Unloc()
}
//Locker接口代表一个可以加锁和解锁的对象

//Once是只执行一次动作的对象
type Once struct{

}
//Do方法当且紧当第一次被调用时才执行函数f 
func (o *Once) Do(f func()) {
    
}

//因为只有f返回后Do方法才会返回 f若引起了Do的调用会导致死锁
config.once.Do(func(){config.init(filename)})

type Mutex struct{

}
//Mutex是一个互斥锁 可以创建为其他接口的字段 零值为解锁状态 Mutex
//类型的锁和线程无关 可以由不同的线程加锁和解锁
func (m *Mutex) Lock() {
    
}
//Lock方法锁住m如果m已经加锁 则阻塞直到m解锁
func (m *Mutex) Unlock() {
    
}
//Unlock方法解锁m如果m未加锁会导致运行时错误 锁和线程无关 可以由不同的线程加锁和解锁
type RWMutex struct{

}
//写入状态
func (r *RWMutex) Lock() {
    
}
func (r *RWMutex) Unlock() {
    
}

func (r *RWMutex) RLock() {
    
}

func (r *RWMutex) RUnloc() {
    
}
func ( *RWMutex) RLocker()Locker {
    
}

type Cond struct{
   L Locker 
}

/*
   Cond实现了一个条件变量 一个线程集合
   每个Cond实例都有一个相关的锁 它必须在改变条件时或者 wait方法保持锁定
*/

func NewCond(l Locker)*Cond 

//Broadcast唤醒所有等待c的线程 
func (c *Cond) Broadcast() {
    
}
//Signal唤醒等待c的一个线程 
func (c *Cond) Signal() {
    
}

type WaitGroup struct{

}

func (w *WaitGroup) Add(delta int) {
    
}

func (w *WaitGroup) Done() {
    
}

func (w *WaitGroup) Wait() {
    
}

type Pool struct{
   New func() interface{}
}

func (p *Pool) Get() interface{}{
    
}

func (p *Pool) Put(x interface{}) {
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值