C++11 线程与 .Net 线程
c++11 threading vs .Net threading?
我应该在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 线程。
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 异常属于C++中的线程还是进程
- C++中的线程安全删除
- C++使用params创建线程函数会导致转换错误
- 类与私有变量的其他类之间的线程安全性
- 混合 c++ 和 .net 的线程本地存储
- 终止调用本机代码的 .Net 线程
- 反调试器技术:如何使用 VB.NET 对调试器隐藏线程?
- 从多线程.net应用程序调用的本机dll中的tbb存在问题
- C++11 线程与 .Net 线程
- .NET C++从其他线程编写UI
- 为什么我的多线程C++ .NET 应用程序仅在可视化工作室之外执行时才崩溃