我正在使用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. 对长时间运行的ADO.NET查询使用ThreadPool线程。这是可扩展的吗?
- 2. 在长时间运行的应用程序中使用临时线程?
- 3. 确实,对于长时间运行的进程,最好是手动执行线程而不是线程池?
- 4. 长时间运行的应用程序
- 5. 对于长时间运行的进程,有没有使用过RabbitMQ和Node.js?
- 6. Android中的线程处理长时间运行的进程
- 7. 如何使用ThreadPool来并行运行套接字线程?
- 8. ASP.NET + WCF下的长时间运行线程程序
- 9. Python:长时间运行后台进程的spawn或线程?
- 10. 蟒蛇继续使用相同的线程持续时间长为长时间运行过程
- 11. 哪个Timer对象应该用于.Net中的长时间运行的进程?
- 12. 哪个HTTPClient可以用于长时间运行的进程
- 13. 长时间php会话的缺点
- 14. WCF中的长时间运行的异步线程
- 15. 返回两个长时间运行的方法的值,使用线程
- 16. 编程一个长时间运行的基于时间的过程
- 17. aws codedeploy长时间运行的进程
- 18. 长时间运行的进程
- 19. 终止长时间运行的进程
- 20. JSF长时间运行的进程
- 21. 睡眠长时间运行的过程
- 22. Java:停止运行时间过长的线程?
- 23. Web(asp.net)环境中的长时间运行操作(线程)
- 24. 长时间运行的线程+生命周期
- 25. 介入一个长时间运行的线程与contextDestroyed
- 26. 如何测试长时间运行的线程
- 27. spin.js在长时间运行的IE浏览器线程和FF
- 28. Android:长时间运行的文件记录线程减慢UI
- 29. 如何终止长时间运行的Qt线程
- 30. 终止长时间运行的python线程