एक मूर्खतापूर्ण सवाल के बिट की तरह लगता है, लेकिन यह मुझे सोच ...क्या सी मानक समय() फ़ंक्शन थ्रेड सुरक्षित है भले ही एक पूर्ण पैरामीटर प्रदान किया गया हो?
here के अनुसार, time
एक शिकायत प्रणाली पर धागा सुरक्षित होने के लिए आवश्यक है, सही है? यह आवश्यकता फ़ंक्शन के पैरामीटर के बावजूद रखती है। NULL
तर्क प्रदान किए जाने पर कुछ फ़ंक्शंस सूचीबद्ध नहीं हैं, इसलिए time
प्रदान नहीं किया गया है।
तो ऐसा लगता है कि किसी भी पर्याप्त POSIX
अनुपालन प्रणाली को time
का थ्रेड सुरक्षित कार्यान्वयन होना चाहिए।
हालांकि, क्या एक पॉज़िक्स सिस्टम time_t
को उस मामले में लागू करने का विकल्प चुन सकता है जो वास्तव में इसे एक सूचक बनाता है और फिर भी अनुपालन करता है? तो यदि परिणाम को स्टोर करने के लिए एक पूर्ण पैरामीटर प्रदान किया जाता है, तो क्या इसके थ्रेड सुरक्षा पर सभी दांव बंद नहीं होंगे क्योंकि यह संभवतः कुछ स्थैतिक भंडारण के लिए सूचक लौटाएगा? या time_t
के लिए कुछ आवश्यकता या सम्मेलन है कि मैं इस पहलू में लापता हूं?
time
कुछ UNIX
प्लेटफॉर्म पर धागा सुरक्षित है, मैं यह कैसे सत्यापित करूं? विशेष रूप से, AIX
, HP-UX
, Linux
, और Solaris
। एक डीबगर में disassembly के माध्यम से कदम काम कर सकता है, लेकिन कार्यान्वयन बदल सकते हैं।
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html: टाइम_टी और clock_t पूर्णांक या वास्तविक चल प्रकार होगा। उन्हें असाइन करना थ्रेड-सुरक्षित होना चाहिए। – marcolz
'टाइम' एक मूर्खतापूर्ण पर्याप्त कार्य है जैसा कि है। हम संगतता कारणों के लिए अपने हस्ताक्षर को तोड़ नहीं सकते हैं, लेकिन इसे कम करने और थ्रेड-असुरक्षित कार्यान्वयन की अनुमति देने का कोई कारण नहीं था। – MSalters
@marcolz धन्यवाद। यकीन नहीं है कि मैं इसे कैसे चूक गया। – Kizaru