12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
编程知识 时间:2024-12-06 15:36:28
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
Go语言的sync.Cond类型是专门用于线程同步的条件变量。它允许一个或多个goroutine等待某个条件成立,同时释放互斥锁(sync.Mutex),让其他goroutine继续执行。当条件满足时,等待的g
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
Go语言的sync.Cond
类型是专门用于线程同步的条件变量。它允许一个或多个goroutine等待某个条件成立,同时释放互斥锁(sync.Mutex
),让其他goroutine继续执行。当条件满足时,等待的goroutine会被唤醒并重新获取互斥锁。
下面是一个简单的示例,展示了如何使用sync.Cond
进行线程同步:
package mainimport ("fmt""sync""time")func main() {var mu sync.Mutexcond := sync.NewCond(&mu)data := 0for i := 0; i < 10; i++ {mu.Lock()for data <= 0 {cond.Wait()}data--fmt.Printf("Goroutine %d: Data is %d\n", i, data)cond.Signal()mu.Unlock()time.Sleep(1 * time.Second)}}
在这个示例中,我们创建了一个互斥锁mu
和一个条件变量cond
。我们使用一个循环来模拟10个goroutine,每个goroutine在data
大于0时执行。当一个goroutine发现data
小于等于0时,它会调用cond.Wait()
进入等待状态,并释放互斥锁。当条件满足(即data
大于0)时,其他goroutine会被唤醒并继续执行。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19