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

精慕门4214220
2020-12-13
bobby老师,你好,我这里有些小疑问
- 无缓冲的chan在写入数据时会加锁并阻塞,直到消费者进行消费后进行解锁
- 有缓冲的chan,一个协程写,一个协程读,那么在写的时候是不是会加锁?直到写完释放锁之后,读的那个协程才能访问到这个chan?
如果是这样的话,那有缓冲和无缓冲的chan这机制就不太一样啊,一个是写的时候,不限制你来读,你读完我才释放锁,一个是写的时候,你得等我写完了,并且把锁释放了,你才能读
写回答
1回答
-
bobby
2020-12-15
有缓冲区的要看具体的缓冲大小,比如你的缓冲区是5,那么你写第2,3,4,5的时候都不会被阻塞的,只有当你写满的时候还在写才会出错的
00
相似问题