在编写目录迭代器时,我发现readdir
函数不可重入。 readdir_r
函数似乎是的重入版本,但我不知道如何确认这一点。虽然readdir
明确标记为不可重入,但readdir_r
没有提及。
有没有办法检查特定POSIX函数的重入?如何检查POSIX函数的重入?
答案 0 :(得分:1)
Here is a POSIX.1c policy for re-entrancy.
这是我的总结。
引用文字。
线程编程需要的头文件
#define _REENTRANT #include <pthread.h> #include <sched.h>
_REENTRANT表示应该使用标准库的可重入(即线程安全)版本。
头文件pthread.h定义了POSIX线程API。
头文件sched.h定义了进程和线程调度API。 在此处说明的功能中,只有
sched_yield()
需要它。
无论如何,这些步骤的另一个声明不再需要了: Is it required for me to add a _REENTRANT macro during compile time to make my errno thread safe? 我们似乎不再需要定义_REENTRANT
了。
术语 reentrancy 是单线程环境中的遗留术语。无论如何,POSIX.1c假设多线程环境,它默默地假设从其他线程案例重新进入。