【发布时间】:2015-09-28 07:06:03
【问题描述】:
这似乎是一个愚蠢的问题,但它让我思考......
根据here,time 在兼容系统上必须是线程安全的,对吗?无论函数的参数如何,此要求都成立。如果提供了NULL 参数,则列出了一些不需要线程安全的函数,并且不包括time。
所以看起来任何足够符合POSIX 的系统都应该具有time 的线程安全实现。
但是,POSIX 系统是否可以选择实现time_t 以使其成为指针并且仍然兼容?因此,如果提供了一个 NULL 参数来存储结果,那么不会因为它可能会返回指向某个静态存储的指针而对它的线程安全性进行所有赌注吗?或者我在这方面缺少time_t 的一些要求或约定?
我最好如何验证time 在一些UNIX 平台上是线程安全的?特别是AIX、HP-UX、Linux 和Solaris。在调试器中逐步完成反汇编可能会起作用,但实现可能会发生变化。
【问题讨论】:
-
pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/… : time_t 和 clock_t 应为整数或实浮点类型。分配它们应该是线程安全的。
-
time是一个足够愚蠢的函数。出于兼容性原因,我们不能破坏它的签名,但几乎没有理由让它变得更加愚蠢并允许线程不安全的实现。 -
@marcolz 谢谢。不知道我是怎么错过的。
标签: c multithreading posix