Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# 单核多线程控制台应用程序_C#_Multithreading - Fatal编程技术网

C# 单核多线程控制台应用程序

C# 单核多线程控制台应用程序,c#,multithreading,C#,Multithreading,可能重复: 我正在重新提出关于单核处理器上多线程的问题 原来的问题是: 我被问到一个问题,在任何给定的时间,只有一个线程被允许在单个内核上运行。如果是这样,为什么人们在应用程序中使用多线程。假设您正在运行控制台应用程序,并且很有可能将应用程序编写为在主线程上运行。但人们还是喜欢多线程 对于“纯”CPU工作来说,速度可能不会更快,但许多任务都涉及不在CPU上的内容(例如访问文件系统、网络、与用户交互等)。即使在单核系统上,使用多个线程也允许一个线程等待文件系统访问,一个线程等待网络操作,一个线

可能重复:

我正在重新提出关于单核处理器上多线程的问题

原来的问题是:

我被问到一个问题,在任何给定的时间,只有一个线程被允许在单个内核上运行。如果是这样,为什么人们在应用程序中使用多线程。假设您正在运行控制台应用程序,并且很有可能将应用程序编写为在主线程上运行。但人们还是喜欢多线程

对于“纯”CPU工作来说,速度可能不会更快,但许多任务都涉及不在CPU上的内容(例如访问文件系统、网络、与用户交互等)。即使在单核系统上,使用多个线程也允许一个线程等待文件系统访问,一个线程等待网络操作,一个线程等待用户响应,等等

因此,虽然使用多线程不会使CPU密集型进程更快,但它可以使应用程序更具响应性(也就是说,它可以“更快”地响应用户交互,因为它在等待网络操作完成时不会被阻塞)


请注意,技术上异步操作甚至比使用多个阻塞线程更快(因为您没有上下文切换的开销),但是,多阻塞线程范例通常比异步编程更容易理解。

投票以完全重复的方式结束-我不明白你为什么再次问这个问题。你好,Jon,我想我没有正确地表达我的问题。我也修改了这个问题。但人们也没有回答这个经过编辑的问题。所以我又把它和Poining一起贴到了老奎斯顿。希望这次我把问题贴对了。请允许人们发表评论。谢谢。谢谢你的回复。但我想知道异步操作如何比多线程更好。如果我没有错的话,异步操作会在不同的线程上运行。同样,必须有正确的上下文切换。请发布关于异步编程如何优于多线程的文章链接或答案。谢谢你抽出时间。