2

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

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

4

4 回答 4

3

我的程序仅适用于 Windows,并且是用 .net 构建的。

考虑到托管语言通常更喜欢开发人员的生产力而不是性能(发生冲突时),我想说托管线程可能对开发人员更加友好。此外,垃圾收集是一个众所周知的生产力功能。

您是否极度需要性能和/或控制?如果没有,我推荐托管代码和托管线程。

于 2012-06-16T19:58:26.957 回答
1

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

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

于 2012-06-16T19:32:38.437 回答
1

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

通用建议是尽可能多地使用托管代码,然后仅在需要时使用互操作到本机,以解决不太适合托管解决方案的问题。

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

于 2012-06-16T21:07:05.247 回答
0

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

于 2012-06-16T21:01:19.457 回答