如果ANSI C++不支持多线程,那么非托管C++应用程序如何成为多线程?

3 c++ multithreading unmanaged managed

我听说C++没有为多线程提供原生支持.我假设多线程C++应用程序依赖托管代码进行多线程处理; 也就是说,例如,Visual C++应用程序使用MFC或.NET或类似的东西来提供多线程功能.我进一步假设某些或所有托管代码功能对于非托管应用程序不可用.但我读过有关非托管多线程应用程序的内容.这怎么可能?我的哪些假设是假的?

Nol*_*rin 12

操作系统完全取决于为多线程提供支持.在Windows上,可通过Win32 API获得必要的功能.诸如MFC之类的框架为低级线程函数提供了包装以简化操作,而.NET/CLR当然有自己的托管接口来访问Win32多线程功能.

本文提供了一个很好的解释(C++中的多线程).

为什么C++不包含对多线程的内置支持?

C++不包含对多线程应用程序的任何内置支持.相反,它完全依赖于操作系统来提供此功能.鉴于Java和C#都提供了对多线程的内置支持,很自然地会问为什么C++也不是这样.答案是效率,控制和应用C++的应用程序范围.我们来看看每一个.

由于不支持多线程,C++不会尝试定义"一刀切"的解决方案.相反,C++允许您直接利用操作系统提供的多线程功能.这种方法意味着您的程序可以以执行环境支持的最有效方式进行多线程处理.由于许多多任务环境为多线程提供了丰富的支持,因此能够访问该支持对于创建高性能,多线程程序至关重要.

  • 虽然MFC确实包含线程函数,但它只不过是本机Win32线程功能的瘦包装器.实际上,Windows上的所有线程(甚至是.NET)只是本机Win32线程之上的一层. (3认同)