为什么C++没有内建支持多线程

来源:互联网 发布:eclipse linux 编辑:程序博客网 时间:2024/04/29 13:40
 
C++没有包含任何对多线程应用程序的内建的支持。相反,它依赖于操作系统提供这个特性。考虑到Java和C#都提供了内建的多线程支持,大家自然会问,为什么C++没有提供,答案是因为效率、控制以及C++适用的应用程序的范围。
 
由于没有内建对多线程的支持,因此C++没有尝试定义一种“万能的”解决方案。相反,C++允许程序员直接使用操作系统提供的多线程特性。这种方法意味着我们的程序可以使用执行环境支持的、最高效的方法来实现多线程。由于许多的多任务环境提供了对多线程丰富的支持,因此能够访问这些支持对于创建高性能的多线程程序至关重要。
 
使用操作系统的函数来支持多线程使得可以全面地使用执行环境提供的控制。考虑Windows环境。它提供了多组线程相关函数来有条理地控制线程的创建和管理。例如,Windows有多种方法来控制对共享资源的访问,共享资源包括信号、互斥体、事件对象、可等待定时器以及临界区。由于操作系统能力的不同,很难将这种灵活性设计到一门语言中。因此,对于多线程语言层次的支持通常意味着仅提供特性的“最小公倍数”。通过C++,我们可以访问操作系统提供的所有特性。当编写高性能的代码时,这是非常重要的优点。
 
C++是为所有类型的程序设计类型设计的,从嵌入式系统(在执行环境中没有操作系统)到高度分布的、基于GUI的终端用户应用程序以及介于二者之间的一切程序。因此,C++不能够对它的执行环境加入明显的限制。内建的对多线程的支持将会从根本上将C++限制在那些支持多线程的环境中,从而阻止了在不使用线程的环境中开发软件时使用C++。
 
最后,没有内建的对多线程的支持是C++的一个主要优点,因为这样可以使用对目标执行环境最高效的方式编写程序。C++的功能无处不在。多线程的情况很明显是一种“简单就好”的情况。
 
原创粉丝点击