प्रलेखन और pthread.h
पर ध्यान देने के बाद, मुझे pthread_mutex_timedlockCLOCK_MONOTONIC
का उपयोग करने का कोई तरीका नहीं मिल रहा है, इसलिए मुझे लगता है कि यह (वर्तमान में) संभव नहीं है। pthread_cond_timedwait लिए, तथापि, आप कोड इस तरह उपयोग कर सकते हैं:
pthread_condattr_t attr;
pthread_cond_t cond;
/* ... */
pthread_condattr_init(&attr);
pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
pthread_cond_init(&cond, &attr);
मैं त्रुटि कोड स्पष्टता के लिए जाँच हटा दिया है, लेकिन निश्चित रूप से आपको लगता है कि क्या करना चाहिए।
मुझे लगता है कि CLOCK_REALTIME
का उपयोग किया जाता है क्योंकि यह हमेशा उपलब्ध होता है जबकि सिद्धांत CLOCK_MONOTONIC
वैकल्पिक है। साथ ही, मुझे आश्चर्य है कि पूर्ण टाइमआउट सेट करना सिग्नल और इसी तरह सिस्टम कॉल में बाधा डालने के बाद पुनर्प्राप्त करना आसान बनाता है।
हालांकि, यह काफी असंगत प्रतीत होता है कि घड़ी कुछ मामलों में सेट की जा सकती है, न कि अन्य - वास्तव में pthread_mutexattr_setclock()
होना चाहिए, लेकिन वहां कोई भी प्रतीत नहीं होता है। मुझे लगता है कि आपको उम्मीद है कि कोई घड़ी सेट नहीं करेगा!
यह अनुचित नहीं है। आपको बस अपने आवेदन के लोकेल टाइमज़ोन को यूटीसी में सेट करना होगा। –
@ महमूद अल-कुड्सी संख्या जो आपकी वास्तविक समय घड़ी को बदलने से नहीं रोकती है। –
आप एक घड़ी वॉचर थ्रेड का उपयोग कर सकते हैं जो सभी पंजीकृत वातानुकूलित चरों को प्रसारित करता है, घड़ी को पीछे की ओर कूदना चाहिए। –