c# – Threadpool,执行顺序和长时间运行的操作

我需要在新的应用程序中创建多个处理线程.每个线程都有可能“长时间运行”.有人可以评论内置的.net线程池或一些现有的自定义线程池的可行性,以便在我的应用程序中使用吗?

要求 :

Windows服务中运行良好. (排队的工作可以从队列中删除,当前正在运行的线程可以告诉停止)

能够启动多个线程.

工作需要按顺序启动,但多个线程可以并行处理.

可以检测并杀死挂起的线程.

编辑:

评论似乎导致手动线程化.不幸的是,我坚持使用3.5版本的框架. Threadpool很吸引人,因为它可以让我排队工作,并在资源可用时为我创建线程.是否有一个很好的3.5兼容模式(生产者/消费者)可以给我这个线程池方面而不实际使用线程池?

解决方法:

您的要求基本上排除了.NET ThreadPool的使用;

由于存在耗尽水池的危险,它通常不应用于长时间运行的螺纹.

但它在Windows服务中运行良好,并且您可以启动多个线程 – 由池的限制自动限制.

您无法保证线程池的线程启动时间;当它有足够的空闲时,它可以将线程排队执行,甚至不保证它们将按照你提交的顺序启动.

在ThreadPool中没有简单的方法来检测和杀死正在运行的线程

基本上,你会想要看看ThreadPool之外;我可能会建议您可能需要’完整’的System.Threading.Thread实例,因为您的所有要求.只要你处理并发问题(正如你必须使用任何线程机制),我就不会发现Thread类本身就很难管理.

上一篇:c# – ThreadPool在调试模式和运行时的行为不同


下一篇:究竟是Java中的线程池在做什么?