Go标准库
Go标准库 sync同步操作
sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。 本包的类型的值不应被拷贝。 - **type Locker**:代表一个可以加锁和解锁的对象 - **type Once**:只执行一次动作的对象 - func (o *Once) Do(f - func()) ```go var once sync.Once onceBody := func() { fmt.Println("Only once") } done := make(chan bool) for i := 0; i < 10; i++ { go func() { once.Do(onceBody) done <- true }() } ``` - **type Mutex** - func (m *Mutex) Lock() - func (m *Mutex) Unlock() - **type RWMutex** 互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex类型的锁和线程无关,可以由不同的线程加锁和解锁 - func (rw *RWMutex) Lock() - func (rw *RWMutex) Unlock() - func (rw *RWMutex) RLock() - func (rw *RWMutex) RUnlock() - func (rw *RWMutex) RLocker() Locker - **type Cond**:实现了一个条件变量,一个线程集合地,供线程等待或者宣布某事件的发生 - func NewCond(l Locker) *Cond - func (c *Cond) Broadcast() - func (c *Cond) Signal() - func (c *Cond) Wait() - **type WaitGroup**:用于等待一组线程的结束 - func (wg *WaitGroup) Add(delta int) - func (wg *WaitGroup) Done() - func (wg *WaitGroup) Wait() ```go var wg sync.WaitGroup var urls = []string{ "http://www.golang.org/", "http://www.google.com/", "http://www.somestupidname.com/", } for _, url := range urls { wg.Add(1) go func(url string) { defer wg.Done() http.Get(url) }(url) } wg.Wait() ``` - **type Pool**:一个可以分别存取的临时对象的集合 - func (p *Pool) Get() interface{} - func (p *Pool) Put(x interface{})
顶部
收展
底部
[TOC]
目录
Go标准库 fmt格式化操作
Go标准库 time时间接口
Go标准库 strings字符串
Go标准库 strconv字符串转换
Go标准库 sort排序
Go标准库 runtime运行环境
Go标准库 sync同步操作
Go标准库 atomic原子性
Go标准库 path路径
Go标准库 filepath文件路径
Go标准库 http
相关推荐
Gin框架