2012-07-17 103 views
9

所以我正在读“通过C#CLR”,发现这一行“线程是一个Windows的概念,其任务是虚拟化CPU”。真?来自Windows的单个\多线程?

谷歌搜索的理由没有帮助,因此寻求社区的帮助。线程是一个Windows概念吗?

+1

我认为本书意味着线程由Windows内核管理,而不是.NET运行时管理。 – MattDavey 2012-07-17 18:06:27

+2

我认为这个问题属于程序员,但后来,我是谁。你甚至不能投票移交给程序员。 – 2012-07-17 18:06:57

+1

这是一个容易理解的错误。从技术上讲,线程是操作系统级的概念。 O/S管理线程。在C#的情况下,在大多数情况下(单声道不能承受),O/S将是Windows,所以在这种情况下,通常它是Windows级别的概念。作为一个普通的,非技术性的解释什么是线程,它是有道理的。这在技术上并不准确,但你的平均新手不会知道或关心这个区别。 – David 2012-07-17 18:11:58

回答

6

简短回答:不,这不仅仅是Windows的概念,而且这个概念已经存在很长时间了。

10

我想是作者真正的意思是线程的机制是什么,是由Windows和.NET不框架进行管理。

+0

这是明显错误的方式,.NET线程不映射到操作系统线程,他们可以共享一个线程,甚至切换到幕后更轻的光纤。他们真的是一个.NET的东西。 – Blindy 2012-07-17 19:17:36

+2

C#文档中没有任何内容说我无法在任何时候进行阻止调用。他们看起来和行为非常像操作系统线程给我。任务管理器似乎也这么想:如果我用C#制作2000个线程,TM将显示我的进程拥有2001个线程。对于.NET(或任何其他框架或环境)来说,试图对我的代码进行光纤/绿色化将是非常不友好的。我看不出它是如何做到的,TBH。 – 2012-07-17 21:32:09

+0

我现在同意CLR线程映射到操作系统线程,但葡萄树告诉这可能会在将来改变(或可能已经在4.5或5.0)。 – 2012-07-18 15:36:40

1

我相信Amiga已经有了多线程。难道说文本是指多线程(也)是Windows的概念,但并不是(最初)是Windows发明?

2

我会说,当我们谈论Windows上的“线程化”时,对共享内存和实现有一定的假设。直到我转到Windows编程(而不是嵌入式编程)之前,我从未听过“线程”这个术语。我更熟悉多处理和多任务处理。所以这个概念并不是独一无二的,但是终结论可能已经改变了。我会在Windows之前的经验中指出,多个进程不共享内存,除非它是全局的。