http://docs.xamarin.com/guides/ios/application_fundamentals/threading
但是,已经完成了一项基准测试,表明Grand Central dispatch比ThreadPool更具性能
因此我的问题是,为什么Xamarin推荐ThreadPool而不是Grand Central dispatch? Xamarin最终是否会将ThreadPool绑定到Grand Central dispatch?什么时候选择一个而不是另一个?因为如果ThreadPool将由Xamarin优化,并最终胜过Grand Central dispatch,那么我不想使用Grand Central dispatch.
解决方法
就像我对你所链接的那篇文章的评论(从2012年2月开始)以及你链接的文章的第一段解释了原因.
GCD和ThreadPool之间的区别在于Mono中的ThreadPool具有“慢启动”设置,因此在出现工作峰值时它不会创建超过必要的线程.您可以通过启动太多线程来轻松地使cpu匮乏,因此线程池在创建初始线程之后限制自身,然后尝试每秒仅创建一个新线程(给予或接受,我不记得实际细节).
如果要强制ThreadPool实际启动大量线程,可以使用ThreadPool.SetMinThreads控制它.
使用ThreadPool的原因是相同的代码可以在所有平台上运行.
请注意,该文档讨论了如何使用ThreadPool而不是其他标准.NET线程API,并且没有说明是否使用GCD.仅仅是线程池比使用线程滚动自己的管理更好.
也就是说API,这些天我建议人们使用任务并行库(TPL),这是一种比线程更高层次的思考后台操作的方式.此外,通过切换一行代码,您可以灵活地使用内置线程池或调度到GCD,从而跨平台获得相同的API.
原文地址:https://www.jb51.cc/csharp/100877.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。