Swift कार्य अनुसूचक: iOS/macOS के लिए GCD, OperationQueue और Combine

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift कार्य अनुसूचक (iOS/macOS): पूर्ण मार्गदर्शिका

कार्य अनुसूचक (Task Scheduler) iOS और macOS के तहत विकास का एक प्रमुख घटक है, जो अतुल्यकालिक संचालन, पृष्ठभूमि कार्यों और मल्टीथ्रेडिंग को कुशलतापूर्वक प्रबंधित करने में सक्षम बनाता है। Swift में कई शक्तिशाली उपकरण उपलब्ध हैं: Grand Central Dispatch (GCD), OperationQueue, नया async/await तंत्र (Swift Concurrency) और Combine फ्रेमवर्क। इस लेख में हम उनमें से प्रत्येक का विस्तार से विश्लेषण करेंगे, कोड उदाहरण प्रस्तुत करेंगे और उपयुक्त उपकरण चुनने के लिए सिफारिशें देंगे।



1. Grand Central Dispatch (GCD)

GCD समानांतर कार्यों के प्रबंधन के लिए एक निम्न-स्तरीय लाइब्रेरी है। यह कतारों (DispatchQueue) के साथ काम करता है और थ्रेड्स का कुशल वितरण सुनिश्चित करता है।



कतारों के मुख्य प्रकार:

  • main — मुख्य कतार (UI-थ्रेड)।
  • global — विभिन्न प्राथमिकताओं (QoS) वाली पृष्ठभूमि कतारें।
  • private — उपयोगकर्ता-परिभाषित कतारें (serial या concurrent)।


GCD उपयोग का उदाहरण:

import Foundation

// पृष्ठभूमि में अतुल्यकालिक कार्यDispatchQueue.global(qos: .background).async { let result = performHeavyComputation() // UI अपडेट करने के लिए मुख्य थ्रेड पर वापस आएं DispatchQueue.main.async { updateUI(with: result) }}

// अनुक्रमिक निष्पादन के लिए सीरियल कतारlet serialQueue = DispatchQueue(label: "com.example.serial")serialQueue.async { // कार्य 1}serialQueue.async { // कार्य 2 (कार्य 1 के बाद निष्पादित होगा)}

// समानांतर कतारlet concurrentQueue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)concurrentQueue.sync { // अवरोधक संचालन (सावधानी!)}


2. OperationQueue

OperationQueue GCD के ऊपर एक उच्च-स्तरीय अमूर्तता है। यह Operation ऑब्जेक्ट्स के साथ काम करता है, जिन्हें कॉन्फ़िगर, रद्द और निर्भरताओं से जोड़ा जा सकता है।



OperationQueue के लाभ:

  • कार्यों के बीच निर्भरताओं का लचीला प्रबंधन।
  • रद्दीकरण और प्राथमिकताओं के लिए अंतर्निहित समर्थन।
  • संचालन की स्थिति का KVO-अवलोकन।


BlockOperation के साथ उदाहरण:

import Foundation

let operationQueue = OperationQueue()operationQueue.maxConcurrentOperationCount = 2

let operation1 = BlockOperation { print("कार्य 1")}let operation2 = BlockOperation { print("कार्य 2")}let operation3 = BlockOperation { print("कार्य 3")}

// निर्भरता सेट करें: कार्य 3 कार्य 1 और 2 के बाद निष्पादित होगाoperation3.addDependency(operation1)operation3.addDependency(operation2)

operationQueue.addOperations([operation1, operation2, operation3], waitUntilFinished: false)

// सभी संचालन रद्द करेंoperationQueue.cancelAllOperations()


Operation का स्वयं का उपवर्ग बनाना:

class DownloadOperation: Operation {    private let url: URL        init(url: URL) {        self.url = url    }        override func main() {        guard !isCancelled else { return }        // डाउनलोड निष्पादित करें        let data = try? Data(contentsOf: url)        // परिणाम प्रसंस्करण    }}

let downloadOp = DownloadOperation(url: URL(string: "https://example.com/data")!)operationQueue.addOperation(downloadOp)


3. Swift Concurrency (async/await)

Swift 5.5 से शुरू होकर, async, await और Task कीवर्ड के माध्यम से अतुल्यकालिक प्रोग्रामिंग के लिए अंतर्निहित समर्थन आया। यह समवर्तीता के साथ काम करने का एक आधुनिक और सुरक्षित तरीका है।



मुख्य घटक:

  • async — अतुल्यकालिक फ़ंक्शन का चिह्नांकन।
  • await — अतुल्यकालिक संचालन के पूरा होने की प्रतीक्षा।
  • Task — एक नया अतुल्यकालिक कार्य बनाना।
  • TaskGroup — कार्यों का समूह निष्पादन।
  • \

अनुशंसाएँ