我对“C standard lib”和“C POSIX lib”有点困惑,因为我发现“C POSIX lib”中定义的许多头文件也是“C standard lib”的一部分。
所以,我假设“C standard lib”是由ANSI C组织定义的lib,并且在不同平台(Win32/Unix-like)上有不同的实现,而“C POSIX lib”只是“C standard”的实现lib”在类 Unix 操作系统上,对吗?
但是“C POSIX lib”包含一些“C standard lib”中未指定的标头,例如<sys/types.h>
, <sys/wait.h>
, and <pthread.h>
.
Take <pthread.h>
作为一个例子,我认为它的“C 标准库”对应项是<threads.h>
,那么如果我想在Linux上写一个多线程程序,我应该包含哪个头文件,<pthread.h>
or <threads.h>
?
POSIX 是标准 C 库的超集,值得注意的是它遵循标准 C 库。如果 C 和 POSIX 发生冲突,C 获胜。
套接字、文件描述符、共享内存等都是 POSIX 的一部分,但 C 库中不存在。
pthread.h
用于 POSIX 线程并且threads.h
是 C11 的新头文件,是 C 库的一部分。也许将来某个时候 pthread 会被弃用,取而代之的是 C 线程,但是您可能还不能指望 C11 得到广泛部署。因此,如果您想要可移植性,您现在应该更喜欢 pthreads。如果可移植性不是问题,并且您有可用的 C11 线程,那么您可能应该使用它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)