मैं iPhone ऑडियो बारे में एक अध्याय के माध्यम से काम कर रहा हूँ और कोड का एक वर्ग है कि मैं का मतलब नहीं कर सकते हैं भर में आ गए हैं:नींद() के बजाय चयन() का उपयोग क्यों करें?
while (aqc.playPtr < aqc.sampleLen)
{
select(NULL, NULL, NULL, NULL, 1.0);
}
(Full code sample is on pages 163-166)। कोड के बारे में मैं समझता हूं कि ऑडियो को किसी अन्य थ्रेड पर संसाधित किया जा रहा है और जबकि लूप केवल मुख्य थ्रेड को समाप्त होने से रोकने के लिए है, जबकि ऑडियो अभी भी संसाधित हो रहा है।
मुझे समझ में नहीं आता है कि select()
sleep()
के बजाय क्यों उपयोग किया जा रहा है।
जो मैंने पढ़ा है उससे select()
का उपयोग I/O में परिवर्तनों की निगरानी करने के लिए किया जाता है और इसे पास करने से NULLs कुछ सार्थक नहीं करता है। मैंने sleep()
का उपयोग कर कोड चलाया है और यह अपेक्षा के अनुसार काम करता है।
डरावना। मुझे नहीं पता था कि लोग अभी भी उस पुरानी चाल का उपयोग करते हैं। और यह एक प्रतीत होता है कि एक नया और चमकदार वास्तुकला जहां 'नींद' के अन्य साधनों का अर्थ उपलब्ध होना चाहिए। इस तरह के कोड के प्रोग्रामर/लिखने पर शर्म की बात है। –
@JensGustedt एक पैरामीटर के रूप में 'डबल' को पार करने के रूप में डरावना नहीं है जब फ़ंक्शन ** सूचक ** को 'स्ट्रक्चर टाइमवल' – JeremyP
@JensGustedt से अपेक्षा करता है यह वास्तव में सोने का एक बहुत ही सुरक्षित तरीका है, क्योंकि नींद() शायद नहीं काम उदाहरण सिग्नल हैंडलर में। – LubosD