繁体   English   中英

perror线程安全吗?

[英]Is perror thread-safe?

我知道errno是线程安全的。 在Linux中,还有另外两个类似的函数,即strerror和strerror_r。 根据Robert Lover的Linux System Programming一书,strerror不是线程安全的,但是strerror_r是。 所以我想知道perror是否是线程安全的。

在POSIX系统(如Linux)中, perror是线程安全的。

perror在此处未列为非线程安全:

本卷POSIX.1-2008定义的所有函数都应是线程安全的,但以下函数1不必是线程安全的。 [...]

http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html

来自C11的报价(早期的标准根本没有承认多线程):

7.1.4库函数的使用

[...]
4标准库中的函数不保证是可重入的,并且可以修改具有静态或线程存储持续时间的对象.188)
5除非在下面的详细描述中另有明确说明,否则库函数应防止数据争用如下:库函数不应直接或间接访问除当前线程以外的线程可访问的对象,除非通过函数直接或间接访问对象参数。 库函数不应直接或间接修改除当前线程以外的线程可访问的对象,除非通过函数的非const参数直接或间接访问对象。如果对象不是,则实现可以在线程之间共享它们自己的内部对象对用户可见,并受到数据竞争的保护。

如果perror任何参数都不能被其他线程同时访问(因此不能对它们进行数据perror ), perror就是线程安全的,就像所有其他没有列出显式异常的C11标准库函数一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM