我曾与< iostream> 和其他通用c ++库。除此之外,我还与<等图书馆合作过。 pthread.h>
现在,我已经读过,依赖于操作系统的系统调用允许库之间的接口和硬件上的功能实现。这在<的工作中很明显。 pthread.h>我们可以在Linux中使用但不能在Windows中使用。我对此的解释是在< pthread.h>函数使用UNIX 系统调用定义,Windows无法理解。
但是<的iostream>似乎在Linux和Windows中都能正常工作。现在我的问题是,即使是 < iostream>的功能需要根据Windows和Linux不同的系统调用来定义,那么<的iostream>适用于两种操作系统。
PS:我知道根据我的想法,所有的库(即API)都将根据操作系统划分,或者库将以不同的形式用于不同的操作系统。答案 0 :(得分:0)
<iostream>
是C ++标准的一部分,它为用户提供了一个接口,以便您可以在不同的操作系统上运行相同的C ++代码,尽管它们是通过下面的不同系统调用实现的。
<pthreads>
是POSIX(可移植操作系统接口)标准的一部分,其实现类似于实现多线程应用程序。
到目前为止一直很好..现在棘手的部分是Windows似乎不支持pthreads
以及大多数其他POSIX标准,因为......好吧,它是非常规的。它有自己的线程库,而不是win32-threads
。
关于操作系统,我认为将它们分为两类,即windows和其他类似unix的操作系统(linux,macos,solaris等)是公平的。这并不是说Windows是一个邪恶的操作系统,只是他们有不同的目标。
如果您需要可移植的多线程应用程序,您可能需要使用更高级别的库,例如OpenMP(在Linux中使用pthreads
实现,可能在Windows中使用win32-threads
。或Intel TBB等等。
同样C++11将拥有它自己的内置线程支持,您可以在Windows和其他人中以相同的方式安全地使用它们,假设这些C ++编译器完全符合标准。
编辑:我忘了提及,有些项目旨在在Cygwin或Interix等窗口上实现POSIX标准(由microsoft开发但在Windows 8中已弃用) )。如果您想在Windows中使用<pthreads>
,也可以使用这些。使用<pthreads>
函数进行的线程调用将映射到本机窗口线程。