में फोन मैं इस कोड के व्यवहार के बारे कुछ संदेह मिलती है:dispatch_sync एक dispatch_async कॉल
dispatch_async(queue, ^{
sleep(2);
NSLog(@"step1");
dispatch_sync(queue, ^{
sleep(3);
NSLog(@"step 2");
});
NSLog(@"step 3");
});
इन पंक्तियों मैं उत्पादन step1 -> step3 -> step2
के रूप में मिलने की उम्मीद से, लेकिन मैं केवल step1
प्राप्त करते हैं।
यदि मैं dispatch_sync को dispatch_async के साथ बदलता हूं तो यह अपेक्षित कार्य करता है, क्या dispatch_sync एक dispatch_async कॉल में इस तरह की समस्या पैदा करता है?
जवाब के बाद संपादित करें ----------------
इस मामले में एक गतिरोध बनाने के लिए:
आप देख सकते हैं स्वीकार किए जाते हैं जवाब इस स्थिति की व्याख्या करने के लिए और प्रलेखन के लिए इस लिंक को जांचें http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/dispatch_async.3.html