C# NET任务中的代码是否最终通过本机Windows线程在CPU或CPU核心上运行?
参考下面的文章,这让人相信.NET任务执行时没有涉及本机OS线程。这是真的吗 编辑 在回顾重复的问题时,我找不到直接解决实例化.NET任务类最终将在本机OS线程上执行的问题的答案。它们指的是线程,但不是区分托管和本机OS线程,就是指托管线程。唯一可以复制的是我自己对其中一个问题的回答 但在挖掘自己的过程中,似乎没有.NET的“魔力”可以避免本机OS线程。Windows内核中没有允许此操作的更改。这与我几十年前的操作系统经验是一致的。简而言之,任何人都无法编写不在本机Windows OS线程上运行的应用程序代码 此外:C# NET任务中的代码是否最终通过本机Windows线程在CPU或CPU核心上运行?,c#,.net,multithreading,task,task-parallel-library,C#,.net,Multithreading,Task,Task Parallel Library,参考下面的文章,这让人相信.NET任务执行时没有涉及本机OS线程。这是真的吗 编辑 在回顾重复的问题时,我找不到直接解决实例化.NET任务类最终将在本机OS线程上执行的问题的答案。它们指的是线程,但不是区分托管和本机OS线程,就是指托管线程。唯一可以复制的是我自己对其中一个问题的回答 但在挖掘自己的过程中,似乎没有.NET的“魔力”可以避免本机OS线程。Windows内核中没有允许此操作的更改。这与我几十年前的操作系统经验是一致的。简而言之,任何人都无法编写不在本机Windows OS线程上运
答案是:视情况而定 涉及一些计算工作的任务将在线程上运行,通常是线程池中的线程 长时间运行的任务,即使用选项
TaskCreationOptions创建。长时间运行
在为其创建的专用线程上运行
I/O任务,如
等待流。ReadAsync()
根本没有线程。操作被发送到IO设备,CPU可以随心所欲地执行任何操作。只有当设备准备好请求的数据时,它才会中断CPU,进行一些低级处理,最终操作系统从线程池获得一个线程来完成任务,并将结果提供给程序。更多详细信息。所有代码都在本机操作系统线程上运行。任务不使用专用的本机线程。SLaks是正确的。请参阅