は愚かな質問のビットのように思えるが、それは私が...考えhereによるとC標準のtime()関数はNULLパラメータを指定してもスレッドセーフですか?
、time
が正しい、準拠システム上でスレッドセーフであることが要求されましたか?この要件は、関数のパラメータに関係なく保持されます。いくつかの関数は、NULL
引数を指定するとスレッドセーフである必要はなく、time
は含まれていません。
したがって、POSIX
準拠のシステムでは、スレッドセーフな実装がtime
である必要があります。
しかし、POSIXシステムではtime_t
を実際にポインタにしていてもそれに準拠して実装することができますか?したがって、結果を格納するためのNULLパラメータが提供されている場合、静的記憶域へのポインタを返す可能性があるため、スレッドセーフティのすべてのベットがオフになるわけではありませんか?または、私がこの面で紛失しているtime_t
のためのいくつかの要件またはコンベンションがありますか?
UNIX
プラットフォームでtime
がスレッドセーフであることを確認するにはどうすればよいでしょうか?特に、AIX
,HP-UX
,Linux
およびSolaris
が好ましい。デバッガで逆アセンブリを実行すると機能する可能性がありますが、実装が変更される可能性があります。
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html:time_t型とclock_tは、整数や実数、浮動小数点型でなければなりません。それらを割り当てることはスレッドセーフでなければなりません。 – marcolz
'time'はそのまま愚かな機能です。互換性の理由からシグネチャを破棄することはできませんが、スレッドを安全でなく実装することはほとんどありませんでした。 – MSalters
@marcolzありがとう。どのように私はそれを逃したか分からない。 – Kizaru