众所周知,我们可以使用C ++库跨平台(无论是Linux还是Windows)编写通用的多线程代码,我想知道为什么c ++ 11使其变得简单,实际上调用OS API还是使用一些其他技术?
答案 0 :(得分:2)
C ++只是您用来表达想法的一种语言。
最后,您的二进制文件仍然必须使用操作系统的功能来执行任何需要系统级访问的操作,例如操纵系统调度程序(例如:创建线程)。
有关其编译器和库用于支持C ++语言功能的OS功能的详细信息,请参见其文档。我想大多数Linux环境都在C ++线程内部使用pthread,而Windows环境则使用win32 apis。
如果您使用gcc
,则可以使用gcc -v
获取该信息:
spectras@etherbee:~$ g++ -v
…
Thread model: posix
…
这意味着在我的系统上它使用posix threads。
答案 1 :(得分:1)
是的,它确实使用OS API。使用C ++线程时,必须链接线程库。
在Linux / Unix中,将-pthread
传递给编译器。在Visual Studio中,选择MT运行时库。