【问题标题】:Does C++11 thread library call OS API to run multi-thread program?C++11线程库是否调用OS API来运行多线程程序?
【发布时间】:2018-08-04 13:06:36
【问题描述】:

众所周知,我们可以使用C++库编写跨平台的通用多线程代码(无论是Linux还是Windows),我想知道为什么c++11让它变得简单,它实际上是调用OS API,还是使用一些其他技术?

【问题讨论】:

  • 在 Windows、Linux 等非平凡、抢占式、多任务操作系统上,没有其他技术是可行的。操作系统管理所有系统资源分配,包括内存、I/O 和内核执行。

标签: linux windows multithreading c++11 operating-system


【解决方案1】:

C++ 只是你用来表达想法的一种语言。

最后,您的二进制文件仍然必须使用操作系统的功能来执行任何需要系统级访问的操作,例如操纵系统调度程序(例如:创建线程)。

您的编译器和库用于支持 C++ 语言功能的操作系统功能的详细信息可以在他们的文档中找到。我猜大多数 Linux 环境都在 C++ 线程的底层使用 pthread,而 Windows 环境使用 win32 apis

如果您使用gcc,您可以使用gcc -v 获取该信息:

spectras@etherbee:~$ g++ -v
…
Thread model: posix
…

这意味着在我的系统上它使用posix threads

【讨论】:

    【解决方案2】:

    是的,它确实使用了操作系统 API。并且在使用 C++ 线程时必须链接线程库。

    在 Linux/Unix 中,将 -pthread 传递给编译器。在 Visual Studio 中选择 MT 运行时库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      相关资源
      最近更新 更多