多线程编程指南

定义 _REENTRANT_POSIX_C_SOURCE

对于 POSIX 行为,请使用 -D_POSIX_C_SOURCE 标志集 ≥ 199506L 来编译应用程序。对于 Solaris 行为,请使用 -D_REENTRANT 标志来编译多线程程序。这些编译器标志适用于应用程序的每个模块。

对于混合的应用程序,具有 POSIX 语义的 Solaris 线程使用 -D_REENTRANT-D_POSIX_PTHREAD_SEMANTICS 标志进行编译。

要编译单线程应用程序,请不要定义 -D_REENTRANT 标志,也不要定义 -D_POSIX_C_SOURCE 标志。不存在这些标志时,errnostdio 等的所有原有定义仍然生效。


注 –

请在不使用 -D_REENTRANT 标志的条件下编译单线程应用程序。使用这种方式编译单线程应用程序,以避免将宏(如 putc(3s))转换为可重复执行函数调用时引起的性能降低。


总之,定义 -D_POSIX_C_SOURCE 的 POSIX 应用程序将获取例程的 POSIX 语义。仅定义 -D_REENTRANT 的应用程序将获取这些例程的 Solaris 语义。定义 -D_POSIX_PTHREAD_SEMANTICS 的 Solaris 应用程序将获取这些例程的 POSIX 语义,但仍然可以使用 Solaris 线程接口。

同时定义 -D_POSIX_C_SOURCE-D_REENTRANT 的应用程序将获取 POSIX 语义。