• ADADADADAD

    Go语言条件变量能用于线程同步吗[ 编程知识 ]

    编程知识 时间:2024-12-06 15:36:28

    作者:文/会员上传

    简介:

    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会被唤醒并继续执行。

    Go语言条件变量能用于线程同步吗.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: go语言