首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果ANSI C++不支持多线程,那么非托管C++应用程序如何实现多线程呢?

如果ANSI C++不支持多线程,那么非托管C++应用程序如何实现多线程呢?
EN

Stack Overflow用户
提问于 2009-05-11 00:19:11
回答 8查看 2.7K关注 0票数 3

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

EN

回答 8

Stack Overflow用户

发布于 2009-05-11 00:22:18

提供多线程支持完全取决于操作系统。在Windows上,通过Win32应用程序接口可以使用必要的功能。像MFC这样的框架在底层线程函数上提供了包装器,以简化事情,而.NET/CLR当然有自己的托管接口来访问Win32多线程功能。

this article (C++中的多线程)提供了一个很好的解释。

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

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

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

票数 12
EN

Stack Overflow用户

发布于 2009-05-11 02:08:16

C++中的多线程不需要托管代码。

就像C++不提供对显示图形、发出声音或从鼠标读取输入的原生支持一样,所使用的操作系统将提供一个C++应用程序接口来利用这些功能。

这不是C++做不到的问题。它只是还没有写入到C++标准中。

票数 4
EN

Stack Overflow用户

发布于 2009-05-11 00:24:17

你的一些假设并不完全正确。操作系统(我指的是win32,因为您提到了.NET)提供了对线程的支持。有很多很好的线程库。它构建在C++操作系统功能之上,以使多线程“更容易”:) --例如pthreadsHere is more at MSDN

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/846355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档