我想知道哪些语言支持(或不支持)本地多线程,并可能获得有关实现的一些细节。希望我们能够提供有关此特定功能的完整概述。
我想知道哪些语言支持(或不支持)本地多线程,并可能获得有关实现的一些细节。希望我们能够提供有关此特定功能的完整概述。
旧版本的C和C++(即C89,C99,C++98和C++03)在核心语言中完全没有支持,尽管诸如POSIX线程之类的库可用于今天普遍使用的每个平台。
C11和C++11是最新版本的C和C++,它们在语言中具有内置的线程支持,但这是C11的一个可选功能,因此像单核嵌入式系统这样的实现可以选择不支持它,同时支持C11的其余部分,如果他们希望的话。
使用CPython时,需要记住GIL。简而言之:即使在多处理器计算机上,仅使用一个处理器。正如评论中所示,有多种解决方法。
Delphi/FreePascal同样支持线程。
从其他答案中可以得知,该功能仅在Windows平台上本地支持。
一些很好的库实现了更好的TThread对象功能:
在这个上下文中,您需要定义“本地”。
Java声称具有某种内置的多线程功能,但实际上只是基于粗粒度锁定和一些库支持。目前来看,它并不比使用POSIX线程的C语言更“本地”。下一个版本的C++(0x)也将包括一个线程库。
我知道Java和C#支持多线程,而下一个版本的C++将直接支持它...(计划中的实现已经作为boost.org库的一部分提供...)
Boost::thread非常好用,但我不确定是否可以说它是语言的一部分。这取决于你是否认为CRT/STL/Boost是C++的“一部分”还是可选的附加库。
(否则几乎没有一种语言具有本地线程,因为它们都是操作系统的功能)。