C++11 线程与 .Net 线程

c++11 threading vs .Net threading?

本文关键字:线程 Net C++11      更新时间:2023-10-16

我应该在C++11/CLI程序中使用哪一个?

c++11 线程和 .net 线程处理的优点和缺点是什么?

我的程序只有Windows,是用.net构建的。

考虑到托管语言通常更喜欢开发人员的工作效率而不是性能(当发生冲突时),我认为托管线程可能对开发人员更友好。此外,垃圾回收是一项众所周知的生产力功能。

您是否对性能和/或控制有极端需求?如果没有,我建议使用托管代码和托管线程。

C++11 将是一种基于标准的、独立于平台的线程处理方式。如果您需要跨平台工作,这一点很重要。

使用 .Net 进行线程处理通常会将您的应用程序与操作系统 (Windows) 绑定。这有一些优点,例如垃圾回收(这在标准C++中是错误的)。但是,请注意,您可能需要随应用程序一起提供 .Net 框架。跨框架版本的问题并不少见。

如果您询问的是托管代码与本机,请尽可能多地使用托管代码 C#,这是一种更好的开发人员体验。 此外,.NET 4 支持出色的 API 来帮助实现多线程处理,请参阅任务并行库 (TPL) 和并发集合支持,适用于初学者。

常规用途建议是尽可能多地使用托管代码,然后仅根据需要对不太适合托管解决方案的问题使用本机互操作。

如果要询问使用 C# 与 C++/CLI,请使用 C#。 两者都是 CLI(托管)语言,但 C++/CLI 更难使用,最适合用于某些托管/本机边界方案。 此外,C++/CLI 不支持智能感知(至少对于 VS2010,也许现在在 2012 年支持?

考虑任期:.NET 线程已经存在了很长时间,并且已知可以使用 C++/CLI。 C++11 线程是新的,我完全可以看到它和 C++/CLI 之间出现的问题,因为/CLI 的东西不是主流,而且可能很少有人同时使用/CLI 和 C++11 线程。