उदाहरण के लिए, GKScore
के reportScoreWithCompletionHandler
(documentation) में, आप कॉलआईओएस पूरा करने वाले हैंडलर ब्लॉक किस धागे में हैं?
[score reportScoreWithCompletionHandler:^(NSError *error) {
// do some stuff that may be thread-unsafe
}];
जिसमें धागा पूरा होने हैंडलर बुलाया जाएगा लगता है: मुख्य थ्रेड, reportScoreWithCompletionHandler
रूप में एक ही धागा बुलाया गया था, या एक अलग धागा (संभवतः थ्रेड जो वास्तविक स्कोर रिपोर्टिंग किया जाता है)?
दूसरे शब्दों में, क्या पूरा करने वाले हैंडलर में किए गए काम को थ्रेड-सुरक्षित होना चाहिए (जैसा कि इससे कोई फर्क नहीं पड़ता कि यह किस धागे में किया गया है)?
दिलचस्प। क्या यह रन लूप के साथ पूरी तरह से interleave है? (यानी, जब पूरा करने वाले हैंडलर को बुलाया जाता है, तो प्रेषित कार्य को अगले रन लूप पुनरावृत्ति से ठीक पहले बुलाया जाएगा, या कुछ देरी हो सकती है?) –
मुझे लगता है कि मुख्य थ्रेड रनलोप सामान्य घटना के हिस्से के रूप में कतारबद्ध ब्लॉक को संसाधित करेगा प्रसंस्करण चक्र तो यह "जल्द ही" होना चाहिए, लेकिन सभी चीजों के साथ runloop संबंधित, समय की गारंटी नहीं है। – mlaster