首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务线程上下文切换

任务线程上下文切换
EN

Stack Overflow用户
提问于 2011-12-05 05:57:32
回答 2查看 3.9K关注 0票数 5

我一直在阅读和阅读,如果我在.Net中使用任务而不是线程,它们将不会受到上下文切换的影响,而线程在上下文切换方面存在问题。

然而,仔细阅读后,我也注意到任务只是在幕后使用线程。

所以我有点困惑,任何澄清都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-06 02:28:55

你所读到的是错误的。

Task是第三方物流的一部分。TPL使用比CLR的线程池更高级的调度程序。一个例子是第三方物流调度器使用WorkStealingQueues

几个事实:

  • 无论你做Task.Factory.StartNew,还是ThreadPool.QueueUserWorkItem,两者都将使用相同的线程池(.NET 4.0)
  • 无论你使用Task还是“原始”线程,每个时间片都会导致上下文切换。
  • 还可以运行优先级更高的线程,它将导致上下文切换。
  • A Task将导致与常规线程一样多的上下文切换。

请注意,只有当没有足够的处理器同时处理线程时,才会发生上下文切换。

要查看的部分链接:

  • Shows how to implement a

  • in .NET:

  • Shows short version of daniel moth's blog post:

  • A short version of daniel moth‘s blog post:

  • .NET 4.0:
  • Shows how to implement a
  • in .NET:
  • Shows short version of daniel moth’s blog post:
  • A short version of daniel moth:
票数 11
EN

Stack Overflow用户

发布于 2011-12-05 06:09:17

上下文切换不是线程所固有的,而是线程误用所固有的。任务以这样一种方式使用线程:无论运行什么线程,都可以执行任何需要完成的任务,从而避免了在线程被滥用时发生的代价高昂的上下文切换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8378907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档