Sembra come po 'una domanda stupida, ma mi ha fatto pensare ...La funzione C time time() è sicura anche se è fornito un parametro NULL?
Secondo here, time
è necessario per essere thread-safe su un sistema compatibile, giusto? Questo requisito vale indipendentemente dai parametri della funzione. Alcune funzioni sono elencate come non necessarie per essere thread-safe se fornito un argomento NULL
e time
non è incluso.
Quindi sembra che qualsiasi sistema sufficientemente compatibile con lo standard POSIX
debba avere un'implementazione thread-safe di time
.
Tuttavia, un sistema POSIX potrebbe scegliere di implementare time_t
in una questione che lo rende effettivamente un puntatore ed essere ancora conforme? Quindi, se viene fornito un parametro NULL per archiviare il risultato, non tutte le scommesse sulla sicurezza del thread dovrebbero essere disattivate in quanto probabilmente restituirebbe un puntatore ad alcuni archivi statici? O c'è qualche requisito o convenzione per time_t
che mi manca in questo aspetto?
Come farei meglio a verificare che time
sia thread-safe su alcune piattaforme UNIX
? In particolare, AIX
, HP-UX
, Linux
e Solaris
. Passare attraverso il disassemblaggio in un debugger potrebbe funzionare, ma le implementazioni potrebbero cambiare.
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html: time_t e clock_t sono tipi interi o reale galleggianti. Assegnare loro dovrebbe essere thread-safe. – marcolz
'time' è una funzione abbastanza stupida così com'è. Non possiamo rompere la sua firma per ragioni di compatibilità, ma c'erano pochi motivi per renderla ancora più silente e consentire implementazioni non sicure. – MSalters
@marcolz Grazie. Non sono sicuro di quanto mi sia mancato. – Kizaru