我正在使用Windows服务中的线程池进行并行处理。我的线程很长。我的设计有什么缺点?对于长时间运行的线程使用ThreadPool的缺点
0
A
回答
1
有已经在这里的答案 - Is it true that for long running processes it is better to do thread manually instead of threadpool?
这是事实。线程池针对小工作单元进行了优化,您可以通过保持线程池 线程来干扰其他工作。
我的经验法则是如果一个操作可能需要一秒以上的时间,它不应该在一个线程池线程上。这可能相当长。
虽然这是无证的,但如果你使用 TaskCreationOptions.LongRunning启动一个任务,那么一个新的线程将启动到 运行任务。
对于大多数IO任务,您应该真正使用框架 的异步版本。这些使用内核函数 并且意味着你不会阻塞任何线程。
与往常一样,我推荐阅读Joe Albahari的免费电子书,然后 Joe Duffy的Windows并发编程。后者长1000页,其中有很多有用的细节。
0
尽管使用线程可以做更多的事情,但每个线程都会占用CPU的一部分,并占用更多的内存。如果你有一个线程用于长时间运行的任务,那么线程池就有可能在短时间内处理该线程,以便为其他任务\线程留出空间。
你会更好地使用异步任务将该线程分成更小的任务,并让他们等待,等待和其他一些选项。
这里这个链接应该帮助你一点点进一步
相关问题
- 1. 使用ThreadPool的缺点
- 2. 对长时间运行的ADO.NET查询使用ThreadPool线程。这是可扩展的吗?
- 3. 用于长时间运行的任务的线程池或TPL
- 4. 在长时间运行的线程
- 5. ASP MVC应用程序重置长时间运行的线程
- 6. 在长时间运行的应用程序中使用临时线程?
- 7. 确实,对于长时间运行的进程,最好是手动执行线程而不是线程池?
- 8. 长时间运行的应用程序
- 9. 如何使用servlet运行长时间运行的进程
- 10. 对于长时间运行的进程,有没有使用过RabbitMQ和Node.js?
- 11. Android中的线程处理长时间运行的进程
- 12. 如何使用ThreadPool来并行运行套接字线程?
- 13. 如果应用程序运行很长时间,则缺少类
- 14. 用于长时间运行的java进程的配置系统
- 15. 长时间运行程序
- 16. 长时间运行Magento的过程中使用长时间运行Magento的过程,以减轻开销
- 17. ASP.NET + WCF下的长时间运行线程程序
- 18. Python:长时间运行后台进程的spawn或线程?
- 19. 哪个Timer对象应该用于.Net中的长时间运行的进程?
- 20. 哪个HTTPClient可以用于长时间运行的进程
- 21. WCF中的长时间运行的异步线程
- 22. 长时间php会话的缺点
- 23. 返回两个长时间运行的方法的值,使用线程
- 24. 编程一个长时间运行的基于时间的过程
- 25. 对于长时间运行的python脚本的失效保护
- 26. 使用Python Tkinter GUI进行长时间运行的进程
- 27. 终止长时间运行的进程
- 28. 长时间运行的进程
- 29. 管道长时间运行的流程
- 30. WCF长时间运行的过程