套接字编写中的多线程危险吗?
Is multithreading dangerous in sockets writing?
我正在创建一个基于 Tcp 的 网络协议 ,我正在使用 berkeley socket 通过 C#。
当两个线程一次尝试通过 socket.send 方法发送数据时,套接字缓冲区会混淆吗?
我应该使用 lock 一次访问一个线程吗?
根据MSDN,Socket class 是线程安全的。所以,这意味着您不需要锁定 send
方法,您可以在不同的线程上安全地发送和接收。但请注意,顺序是无法保证的,因此如果您在一次调用 send
方法而不是分块调用时发送所有数据,则数据不会混合。
除此之外,我建议锁定并刷新它,以防万一您不希望服务器在多个并发请求之间交换响应。但好像不是这样。
我正在创建一个基于 Tcp 的 网络协议 ,我正在使用 berkeley socket 通过 C#。
当两个线程一次尝试通过 socket.send 方法发送数据时,套接字缓冲区会混淆吗?
我应该使用 lock 一次访问一个线程吗?
根据MSDN,Socket class 是线程安全的。所以,这意味着您不需要锁定 send
方法,您可以在不同的线程上安全地发送和接收。但请注意,顺序是无法保证的,因此如果您在一次调用 send
方法而不是分块调用时发送所有数据,则数据不会混合。
除此之外,我建议锁定并刷新它,以防万一您不希望服务器在多个并发请求之间交换响应。但好像不是这样。