macOS GCD - Grand Central Dispatch
मूल जानकारी
ग्रैंड सेंट्रल डिस्पैच (GCD), जिसे लिबडिस्पैच (libdispatch.dyld
) के रूप में भी जाना जाता है, macOS और iOS दोनों में उपलब्ध है। यह एक प्रौद्योगिकी है जिसे Apple ने बनाया है ताकि एप्लिकेशन समर्थन को अनुक्रमिक (मल्टीथ्रेडेड) क्रियान्वयन के लिए अनुकूलित कर सके मल्टीकोर हार्डवेयर पर।
GCD आपके एप्लिकेशन को ब्लॉक ऑब्जेक्ट के रूप में कार्यों को सबमिट करने के लिए FIFO कतारें प्रदान करता है और प्रबंधित करता है। डिस्पैच कतारों में सबमिट किए गए ब्लॉक को सिस्टम द्वारा पूरी तरह से प्रबंधित धागों पर निष्पादित किया जाता है। GCD स्वचालित रूप से धागों को निष्पादित करने के लिए धागों में कार्यों को निष्पादित करने के लिए धागों के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्पादित करने के लिए धागों को निष्प
और यह पैरललिज़्म का उपयोग करने के लिए एक उदाहरण है dispatch_async
के साथ:
स्विफ्ट
libswiftDispatch
एक लाइब्रेरी है जो ग्रांड सेंट्रल डिस्पैच (GCD) फ्रेमवर्क के लिए स्विफ्ट बाइंडिंग प्रदान करती है जो मूल रूप से C में लिखी गई है।
libswiftDispatch
लाइब्रेरी C GCD APIs को एक और स्विफ्ट-मित्र इंटरफेस में लपेटती है, जिससे स्विफ्ट डेवलपर्स को GCD के साथ काम करना आसान और सहज होता है।
DispatchQueue.global().sync{ ... }
DispatchQueue.global().async{ ... }
let onceToken = DispatchOnce(); onceToken.perform { ... }
async await
var (data, response) = await URLSession.shared.data(from: URL(string: "https://api.example.com/getData"))
कोड उदाहरण:
फ्रिडा
निम्नलिखित फ्रिडा स्क्रिप्ट का उपयोग कई डिस्पैच
फ़ंक्शन में हुक करने और कतार का नाम, बैकट्रेस और ब्लॉक निकालने के लिए किया जा सकता है: https://github.com/seemoo-lab/frida-scripts/blob/main/scripts/libdispatch.js
गिडरा
वर्तमान में गिडरा न तो ObjectiveC dispatch_block_t
संरचना को समझता है, न ही swift_dispatch_block
को।
तो यदि आप चाहते हैं कि यह उन्हें समझे, तो आप बस उन्हें घोषित कर सकते हैं:
फिर, कोड में एक स्थान ढूंढें जहां वे उपयोग किए जा रहे हैं:
"ब्लॉक" के सभी संदर्भों का ध्यान रखें ताकि आप समझ सकें कि संरचना का उपयोग कैसे किया जा रहा है।
माउस दायां क्लिक करें -> परिवर्तन चर का पुनर्निर्धारण करें और इस मामले में swift_dispatch_block
का चयन करें:
गिडरा स्वचालित रूप से सब कुछ लिख देगा:
संदर्भ
Last updated