System.Net.WebSockets.ClientWebSocket的线程安全性

5
文档 对于 System.Net.WebSockets.ClientWebSocket 类的线程安全性不够清晰。
同时从多个线程调用 SendAsync 方法是否安全?

有什么不清楚的吗?“此类型的任何公共静态成员(在 Visual Basic 中为 Shared)都是线程安全的。任何实例成员都不能保证是线程安全的。” 对我来说很清楚,所以对你的问题的答案是否定的,它似乎不安全。 - Lasse V. Karlsen
1个回答

2

足以保证线程安全,从而完成一些工作。

根据源代码(感谢Michael Kropat在https://www.codetinkerer.com/2018/06/05/aspnet-core-websockets.html上进行的讨论)

线程安全性:

  • 在并行中调用ReceiveAsync和SendAsync是可接受的。每个操作都可以同时运行。
  • 在调用CloseOutputAsync或CloseAsync时有一个未完成的ReceiveAsync是可接受的。
  • 尝试同时调用其他任何操作可能会损坏实例。在进行发送操作时尝试调用另一个正在进行的发送操作或在进行接收操作时尝试调用另一个正在进行的接收操作将导致异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接