Scheint, wie wenig eine dumme Frage, aber es hat mich zum Nachdenken ...Ist die C-Funktion timetime() auch dann sicher, wenn ein NULL-Parameter angegeben wird?
Nach here wird time
erforderlich Thread-sicher auf einem konformes System zu sein, richtig? Diese Anforderung gilt unabhängig von den Parametern der Funktion. Einige Funktionen sind nicht als Thread-sicher aufgeführt, wenn ein Argument NULL
bereitgestellt wird, und time
ist nicht enthalten.
So sieht es aus wie ausreichend POSIX
kompatibles System sollte eine Thread-sichere Implementierung von time
haben.
Aber könnte ein POSIX-System wählen, time_t
in einer Angelegenheit zu implementieren, die es tatsächlich zu einem Zeiger macht und immer noch kompatibel ist? Wenn also ein NULL-Parameter zum Speichern des Ergebnisses bereitgestellt wird, wären dann nicht alle Wetten auf die Thread-Sicherheit aus, da es wahrscheinlich einen Zeiger auf einen statischen Speicher zurückgibt. Oder gibt es eine Anforderung oder Konvention für time_t
, die ich in diesem Aspekt vermisse?
Wie sollte ich überprüfen, ob time
auf einigen Plattformen UNIX
threadsicher ist? Insbesondere AIX
, HP-UX
, Linux
und Solaris
. Das Durchlaufen der Disassemblierung in einem Debugger könnte funktionieren, aber die Implementierungen können sich ändern.
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html: Time_t und clock_t wird integer oder Echt floating Typen sein. Ihre Zuweisung sollte Thread-sicher sein. – marcolz
'Zeit' ist eine alberne Funktion wie es ist. Wir können die Signatur nicht aus Kompatibilitätsgründen brechen, aber es gab wenig Grund, es noch närrischer zu machen und Thread-unsichere Implementierungen zuzulassen. – MSalters
@marcolz Danke. Ich bin mir nicht sicher, wie ich das vermisst habe. – Kizaru