channel加锁的问题

来源:13-9 使用channel容易出现deadlock的原因

精慕门4214220

2020-12-13

bobby老师,你好,我这里有些小疑问

  1. 无缓冲的chan在写入数据时会加锁并阻塞,直到消费者进行消费后进行解锁
  2. 有缓冲的chan,一个协程写,一个协程读,那么在写的时候是不是会加锁?直到写完释放锁之后,读的那个协程才能访问到这个chan?

如果是这样的话,那有缓冲和无缓冲的chan这机制就不太一样啊,一个是写的时候,不限制你来读,你读完我才释放锁,一个是写的时候,你得等我写完了,并且把锁释放了,你才能读

写回答

1回答

bobby

2020-12-15

有缓冲区的要看具体的缓冲大小,比如你的缓冲区是5,那么你写第2,3,4,5的时候都不会被阻塞的,只有当你写满的时候还在写才会出错的

0
0

Go+Python打造电商系统 自研微服务框架 抓紧高薪机遇

快速转型Go工程师,成为具备双语言后端能力的开发者

508 学习 · 530 问题

查看课程