我读了另一天,对于长时间运行的任务,我最好的办法是手动创建线程,而不是使用.NET的线程池或任务并行.当我正在学习c#线程,特别是长时间运行的IO任务时,我真的希望有人开启我.先谢谢你.
解决方法
那是真实的.线程池针对小型工作单元进行了优化,您可以通过持有线程池线程来干扰其他工作.
我的经验法则是如果一个操作可能需要一秒钟以上,它不应该在一个线程池线程上.那可能很长
虽然这是没有文档的,但如果您使用TaskCreationoptions.LongRunning启动任务,则会启动一个新的线程来运行该任务.
对于大多数IO任务,您应该真正使用的框架方法有异步版本.这些使用内核函数,意味着你不会阻止任何线程.
和往常一样,我建议阅读Joe Albahari’s free ebook,
其次是Joe Duffy’s Concurrent Programming on Windows.后期是1000页长,但充满了有用的细节.
原文地址:https://www.jb51.cc/csharp/95829.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。