【问题标题】:Is thread a windows concept?线程是windows的概念吗?
【发布时间】:2012-07-16 17:10:41
【问题描述】:

所以我在阅读“CLR via C#”时发现这一行“线程是一个 Windows 概念,其工作是虚拟化 CPU”。真的吗?单\多线程最初来自 Windows?

搜索理由没有帮助,因此向社区寻求帮助。

【问题讨论】:

  • 我认为这本书的意思是线程由 Windows 内核而不是 .NET 运行时管理。
  • 我认为这个问题属于程序员,但是,我是谁。你甚至不能再投票给程序员了。
  • 这是一个容易理解的错误。从技术上讲,线程是操作系统级别的概念。 O/S 管理线程。在 C# 的上下文中,在大多数情况下,(不支持 Mono),O/S 将是 Windows,所以在这个上下文中,通常它是一个 Windows 级别的概念。作为对它是什么线程的一般性、非技术性解释,这是有道理的。这在技术上并不准确,但你的普通新手不会知道或关心这种区别。
  • “电话是一个 iPhone(TM) 概念,其工作是拨打电话”:)
  • 当然不是。自恐龙时代以来,就有多个具有独立堆栈和共享内存的执行单元(AKA IBM 蓝色盒子、DEC 红色 PDP11 和橙色 VAXes)。当然早于 W3.1,它甚至没有名副其实的调度程序。

标签: c# windows multithreading operating-system


【解决方案1】:

我想作者的真正意思是线程作为一种机制是由 Windows 而非 .NET 框架管理的。

【讨论】:

  • 顺便说一句,这显然是错误的,.NET 线程不映射到 OS 线程,它们可以共享单个线程,甚至在幕后切换到更轻量级的光纤。它们确实是 .NET 的东西。
  • C# 文档中没有任何内容表明我无法随时进行阻塞调用。在我看来,它们的外观和行为非常像操作系统线程。任务管理器似乎也这么认为:如果我用 C# 创建 2000 个线程,TM 会显示我的进程有 2001 个线程。对于 .NET(或任何其他框架或环境)来说,尝试纤维化/绿色化我的代码是非常不友好的。我看不出它是怎么做到的,TBH。
  • 我同意,目前,CLR 线程映射到 OS 线程,但小道消息说这可能会在未来发生变化(或者可能已经在 4.5 或 5.0 中发生了变化)。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我相信 Amiga 已经有了多线程。是不是文中提到多线程是(也是)一个 Windows 概念,但不是说它(最初)是一个 Windows 发明?

      【讨论】:

        猜你喜欢
        • 2014-02-25
        • 2013-09-07
        • 1970-01-01
        • 2018-12-18
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多