标签: channel
与该标签相关的所有文章 "channel".
-
tokio(三):I/O、定时器、同步原语与 select!
tokio 的 I/O 驱动将 mio 的 Poll 包装为与调度器集成的 Reactor,通过 Waker 机制在 fd 就绪时唤醒对应 task。定时器使用六级分层时间轮(每级 64 slot),所有操作 O(1)。同步原语(Mutex / channel / Semaphore)专为 async 设计,核心区别是等待时不阻塞线程。select! 宏是 tokio 最强大也最危险的组合器,理解其取消语义是正确使用的前提。
-
Go 并发(一):Channel 内部机制与使用模式
Channel 是 Go CSP 并发模型的核心原语,底层由 hchan 结构体实现(环形缓冲区 + 互斥锁 + 两条等待队列)。发送/接收的关键优化是直接传输——当对端已在等待时,数据绕过缓冲区直接拷贝到对方栈上。select 通过随机轮询序(防饥饿)+ 地址排序加锁(防死锁)实现多路复用。理解这些内部机制对写出正确、高效的并发代码至关重要。