【发布时间】:2012-03-08 22:29:27
【问题描述】:
在我的应用程序中,我有一组插件 - 当应用程序中发生某些事件时执行一些小动作的类。插件的每个方法都必须在单独的线程中调用,但每个插件只能同时运行一个方法。
我可以通过两种方式实现:
为每个插件创建一个线程,该线程将处理来自插件队列的事件,直到队列为空。然后休眠,直到新事件进入队列,处理它等等。
当事件到达插件的队列时,它在线程池线程中处理。当队列变为空时,将其释放回线程池。
问题是:两种方式的优缺点是什么?
一些说明:
- 插件不会过多地加载 CPU,大部分时间它们只是等待下一个事件。
- 我不在乎创建线程所需的时间,插件是长期存在的。
- 通常每个应用程序都有大约 10-20 个这样的插件。
【问题讨论】:
-
“虽然每个插件只能同时运行一个方法” - 你的意思是对于给定的插件,你不能同时调用两个方法吗?但是如果你有单独的插件,你可以同时在这些不同的插件上执行方法吗?
标签: .net multithreading performance threadpool