是每个线程或每个进程的C99 fesetround()/ fegetround()状态?

时间:2013-02-07 03:01:10

标签: c floating-point thread-safety c99 c11

我在网上发现的C和POSIX引用没有指定C99的fesetround()的线程安全性。甚至GNU文档也没有[1]。状态是每线程还是每个进程?

[1] https://www.gnu.org/software/hello/manual/libc.html#Rounding

1 个答案:

答案 0 :(得分:8)

C11,它定义了线程和fesetround(),回答它是每个线程。 (这是唯一合理的答案,但必须说明。)

草案N1570 [1]第7.6.2节:“浮点环境具有线程存储持续时间。线程浮点环境的初始状态是创建它的线程的浮点环境的当前状态在创作时。“

[1] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf