我有多个Goroutines共享一个net.Conn对象.他们可以同时发出写呼叫吗?
我主要担心的是部分完成的写调用.假设我打算写100个字节,但只发送了30个字节,所以我需要再发送70个字节.为此,我通常会写一个循环:
count := 0
for count < len(buf) {
byteSent, err := conn.Write(buf[count:])
//check error
count += byteSent
}
Run Code Online (Sandbox Code Playgroud)
但是我看到Go在net.Conn.Write行号318中实现了这个循环,它通过锁定来实现.
但是,在Windows实现中,除了调用WSASend之外没有这样的循环.我不知道WSASend的行为如何,也无法从MSDN文档中获得太多
因此问题是:
[编辑]添加第4个问题