//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{}) {
}