我已经阅读了数百页并使用了很多示例,但现在我完全困惑了。大多数示例似乎针对以下内容:
- 设置计时器生成一个新线程来完成一些工作,线程数量无限
- 生成特定数量的线程,每个线程都有一个计时器执行某项任务
- 定期执行一些工作
我要实现的是:
- 设置计时器以定期生成线程
- 这个线程可能会比计时器滴答声所需的时间更长
- 设定生成线程的数量上限
- 当线程完成后将其返回,以便可以重新使用它
- 每个线程中的工作互不干扰,可以异步运行(这并不重要)
类比一下,我希望我的应用程序像一艘拥有10根鱼线的渔船一样工作。一开始你会投掷一条鱼线(按需求),然后再投掷另一条,以此类推。在任何时候,水中可能有0到10条鱼线。每当捕到一条鱼时,就会拉起鱼线,并准备好再次投掷(如果需要的话)。
听起来我应该使用线程池?我还在考虑,为了保持简单,是否应该生成一个线程,如果没有工作,则立即返回它(例如从某个表中选择计数,如果计数为0,则返回线程),而不是尝试智能地确定是否需要生成线程。
一般来说,当系统处于空闲状态时,它将不断生成一个线程,然后查看是否有工作可做,如果没有则返回,但在繁忙时期,线程可能会被用到极限,直到其中一个或多个完成时才会返回。
我已经尝试过System.Threading和Semaphores以及WaitHandles,但这些都变得非常混乱。我还没有代码可以展示,因为我一直在删除并采用不同的方法。任何帮助都将不胜感激。
我使用C#2010进行开发。