Golangs goroutines 为 goroutine (-programmer) 提供了一个阻塞 I/O 的接口。在幕后,运行时自然会使用某种非阻塞 I/O 来防止 OS 挂起 OS 线程,以便运行时可以在执行 I/O 时在 OS 线程之上运行另一个 goroutine。
运行时什么时候考虑执行的 I/O 以便它可以重新调度 goroutine?
明确地说,假设我有一个net.TCPConn我调用的,我Write什么时候可以期望重新安排 goroutine?
conn, err := net.Dial("tcp", serverAddr)
conn.Write(buffer)
timestamp = time.Now()
那是什么时候我可以期望使用时间戳?
当缓冲区被复制到 golang 运行时?
何时将缓冲区复制到运行时和操作系统的内核空间?
当缓冲区被复制到运行时、内核空间以及网卡的发送缓冲区时?
缓冲区何时通过网络/从 NIC 发送?
当缓冲区已被接收端确认时,TCP 堆栈?
蛊毒传说
慕姐4208626
相关分类