Golang - 简述channel和mutex锁机制的原理异同与使用场景

Channel

原理:当channel能存放的元素数量为0时表示为阻塞型channel。当管道无数据时,需要从管道取数据的协程会被阻塞,不会向下执行。所以可以通过多个协程应用同一个channel,从而实现协程间的同步。

使用场景: 1. 需要协程通信时 2. 需要管道传输数据时。

Mutex

原理:互斥锁用来防止资源竞争,多个协程使用同一把排它锁时,原来是并发运行的话将变为线性运行。

排它锁针对任意操作都是排它的,没有读写区分。若一个goroutine获得锁,则其他goroutine会一直阻塞到他释放锁后才能获得锁。

使用场景: 解决协程并发时对同一资源的竞争问题。

 

Golang - 互斥锁和读写锁

 

posted @   李若盛开  阅读(523)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示