gpt4 book ai didi

c# - 如何创建始终在单独线程中运行的单例?

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:40 28 4
gpt4 key购买 nike

我想改一下我之前的问题 How to create Singleton with async method?

想象一下消息传递应用程序(如 icq)- 应该始终连接到服务器并可以发布消息的东西。

我需要实现类 Connection。它应该是单例的,因为它内部包含“套接字”,并且该套接字应该在整个应用程序生命周期内持续存在。

然后我要实现异步方法Connection.postMessage

因为 postMessage 会占用大量时间:

  • postMessage 应该是异步的
  • postMessage 如果需要,应该对消息进行排队

请注意,我的应用程序每秒发送数十条消息,因此不适合为每个 postMessage 调用创建新线程。

我非常需要为消息发布创建一个额外的线程,但我不知道在哪里以及如何创建。

更新: 很好的例子 http://msdn.microsoft.com/en-us/library/yy12yx1f(v=vs.80).aspx

最佳答案

不,Postmessage(本身)不应该是异步的。

应该

  • 线程安全
  • 确保处理线程正在运行
  • 排队消息(ConcurrentQueue)
  • 返回

处理线程应该

  • 在队列中等待
  • 处理消息
  • 可能会在空闲 xx 毫秒时自行终止

您所拥有的是一个典型的生产者/消费者情况,其中有 1 个消费者和多个生产者。

PostMessage 是所有生产者的入口点。

关于c# - 如何创建始终在单独线程中运行的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5801952/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com