Wygląda trochę głupie pytanie, ale to dało mi do myślenia ...Czy wątek funkcji standardowego czasu() jest bezpieczny, nawet jeśli podano parametr NULL?
Według here, time
ma obowiązek być bezpieczne dla wątków w systemie zgodnym, prawda? To wymaganie obowiązuje niezależnie od parametrów dla funkcji. Kilka funkcji wymieniono jako niewymagane, aby były bezpieczne dla wątków, jeśli podano argument NULL
, a time
nie zostały uwzględnione.
Wygląda więc na to, że każdy odpowiedni system zgodny z POSIX
powinien mieć implementację bezpiecznej dla wątków time
.
Czy jednak system POSIX może wdrożyć time_t
w sprawie, która faktycznie czyni wskaźnik i nadal jest zgodna? Więc jeśli podano parametr NULL do przechowywania wyniku, to czy nie wszystkie zakłady na jego bezpieczeństwo wątku byłyby wyłączone, ponieważ prawdopodobnie zwróciłby wskaźnik do statycznego magazynu? Czy jest jakiś wymóg lub konwencja dla time_t
, której mi brakuje w tym aspekcie?
Jak najlepiej sprawdzać, czy time
jest bezpieczne dla wątków na kilku platformach UNIX
? W szczególności, AIX
, , Krok po demontażu w debugerze może działać, ale implementacje mogą się zmienić.
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html: time_t i clock_t powinna być całkowita lub rzeczywistym pływające typy. Przypisywanie ich powinno być bezpieczne dla wątków. – marcolz
'time' jest wystarczająco głupią funkcją. Nie możemy złamać jego sygnatury ze względu na kompatybilność, ale nie było powodu, aby była jeszcze bardziej głupia i pozwalała implementować wątki niebezpieczne. – MSalters
@marcolz Dziękuję. Nie wiem, jak to przegapiłem. – Kizaru