线程和高级语言

时间:2010-01-03 11:35:24

标签: multithreading

有人可以告诉我为什么如果我使用线程,最好使用像c ++这样的低级语言 而不是c#和JAVA?有人在接受采访时问我,我不知道答案

4 个答案:

答案 0 :(得分:3)

这对我来说是新闻。例如,更高级别的语言提供了易于使用的线程管理抽象。

我希望面试官的观点在上下文中有意义。它取决于手头的问题 - 如果您为发动机管理系统编写计算机游戏或软件,您所需的时间控制水平可能比您编写会议室预订系统时更大。

您可以权衡低级别控制和相关的学习曲线,以及使用低级语言获得的风险,以便于更高级别语言的使用,安全性和生产力。

答案 1 :(得分:3)

我认为这不一定是真的。在Java中(我无法对C#发表评论),线程直接映射到本机线程。来自here

  

Java HotSpot™虚拟机   目前关联每个Java线程   使用独特的本机线程。该   Java线程之间的关系   并且本机线程是稳定的   坚持Java的生命周期   线程。

此外,您还拥有其他高级构造,例如Executor框架。

前进,函数式语言(如F#和Scala)鼓励不变性,这有助于形成更安全的线程环境。

很可能有低级语言提供更多控制的情况(如大多数要求),但我怀疑这些是相当专业的情况。您必须平衡高级语言提供的安全性/生产力。

编辑:根据您对此问题的补充,此可能与运行垃圾收集器和随后的垃圾收集暂停以及对提供实时性能和可预测性的影响有关。 C / C ++中的线程可能会在这个领域提供一些好处,因为在一些关键的时间相关代码中,垃圾收集周期不会开始。出于这个原因(其中)Java不能被视为实时平台。

答案 2 :(得分:2)

像大多数答案一样:这取决于。具有内置线程功能的语言,如C#和Java 将为您完成线程使用和同步所需的部分或大部分工作。

使用C ++,您可以自己动手,但可以为您的特定操作系统和平台采用更好的优化技术

答案 3 :(得分:0)

您是否会使用线程 - 仅取决于应用程序,而不取决于语言。语言是设计的一个功能。 C ++提供了更多的控制,c#提供了更多的抽象,Java提供了简化,但最终它们都以相同的方式工作。