我目前正在使用 Retlang 在 .NET 中进行基于消息的多线程,这是一个很棒的库。我不再有显式锁,每个线程都在做自己的事情,管理应用程序的一部分并通过消息与其他线程通信。
我现在必须实现我的应用程序的一项功能,该功能也可以有自己的发布者/订阅者线程。唯一的问题是这个线程实际上会做很少的工作。预计每 10 分钟左右会收到来自发布者的消息。当收到一条消息时,它会做一些工作,但不会超过几百毫秒。
所以我开始怀疑让一个线程在 99.9% 的时间里处于休眠状态是否真的是一个不错的选择。这种操作有线程池,但由于我无法控制接收消息的线程,所以我不得不求助于丑陋的、容易出错的锁。
我的问题是:在资源方面,让线程闲置,等待绝大多数时间真的是个问题吗?在使用良好的基于消息的架构之后使用共享多线程感觉就像回到过去,而且它将是应用程序中唯一带有锁的部分。但我一直在想“我在这里做错了吗?” 用这个线程。
编辑:谢谢大家,在阅读了你们的每一个答案后,我决定另一个线程不是那么大的问题。我的应用程序将仅与基于消息的多线程保持一致,如果我真的有性能问题(但不应该是这样),我会进一步调查。