Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET任务中的代码是否最终通过本机Windows线程在CPU或CPU核心上运行?_C#_.net_Multithreading_Task_Task Parallel Library - Fatal编程技术网

C# NET任务中的代码是否最终通过本机Windows线程在CPU或CPU核心上运行?

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线程上运

参考下面的文章,这让人相信.NET任务执行时没有涉及本机OS线程。这是真的吗

编辑

在回顾重复的问题时,我找不到直接解决实例化.NET任务类最终将在本机OS线程上执行的问题的答案。它们指的是线程,但不是区分托管和本机OS线程,就是指托管线程。唯一可以复制的是我自己对其中一个问题的回答

但在挖掘自己的过程中,似乎没有.NET的“魔力”可以避免本机OS线程。Windows内核中没有允许此操作的更改。这与我几十年前的操作系统经验是一致的。简而言之,任何人都无法编写不在本机Windows OS线程上运行的应用程序代码

此外:


答案是:视情况而定

涉及一些计算工作的任务将在线程上运行,通常是线程池中的线程

长时间运行的任务,即使用选项
TaskCreationOptions创建。长时间运行
在为其创建的专用线程上运行


I/O任务,如
等待流。ReadAsync()
根本没有线程。操作被发送到IO设备,CPU可以随心所欲地执行任何操作。只有当设备准备好请求的数据时,它才会中断CPU,进行一些低级处理,最终操作系统从线程池获得一个线程来完成任务,并将结果提供给程序。更多详细信息。

所有代码都在本机操作系统线程上运行。任务不使用专用的本机线程。SLaks是正确的。请参阅