সুইফট 3-এ কীভাবে বর্তমান থ্রেড চেক করবেন?


105

সুইফট 3-এ বর্তমান থ্রেড কোনটি আমি পরীক্ষা করব?

সুইফ্টের পূর্ববর্তী সংস্করণগুলিতে এটি করা দ্বারা বর্তমান থ্রেডটি প্রধান ছিল কিনা তা পরীক্ষা করা সম্ভব ছিল:

NSThread.isMainThread()

উত্তর:



106

Thread.isMainThreadআপনি বর্তমানে ইউআই থ্রেডে রয়েছেন কিনা তা বোঝাচ্ছে এমন একটি বুলিয়ান ফিরিয়ে দেবে। তবে এটি আপনাকে বর্তমান থ্রেড দেবে না। এটি কেবলমাত্র আপনিই বলবেন আপনি মূলতে আছেন কি না।

Thread.current আপনি চালু বর্তমান থ্রেড ফিরিয়ে দেবে।


24

আমি থ্রেড এবং সারি মুদ্রণের জন্য একটি এক্সটেনশন করেছি:

extension Thread {
    class func printCurrent() {
        print("\r⚡️: \(Thread.current)\r" + "🏭: \(OperationQueue.current?.underlyingQueue?.label ?? "None")\r")
    }
}

Thread.printCurrent()

ফলাফলটি হবে:

⚡️: <NSThread: 0x604000074380>{number = 1, name = main}
🏭: com.apple.main-thread

17

সুইফট 4 এবং উপরে:

Thread.isMainThreadপ্রত্যাবর্তন Boolকরে যে ব্যবহারকারী যদি প্রধান থ্রেডে থাকে বা না থাকে তবে যদি কেউ সারি / থ্রেডের নাম মুদ্রণ করতে চায় তবে এই এক্সটেনশনটি সহায়ক হবে

extension Thread {

    var threadName: String {
        if let currentOperationQueue = OperationQueue.current?.name {
            return "OperationQueue: \(currentOperationQueue)"
        } else if let underlyingDispatchQueue = OperationQueue.current?.underlyingQueue?.label {
            return "DispatchQueue: \(underlyingDispatchQueue)"
        } else {
            let name = __dispatch_queue_get_label(nil)
            return String(cString: name, encoding: .utf8) ?? Thread.current.description
        }
    }
}

ব্যবহারবিধি:

print(Thread.current.threadName)

9

জিসিডি ব্যবহার করার সময় আপনি আরও কার্যকর করার জন্য প্রয়োজনীয় প্রেরণের শর্তটি পরীক্ষা করতে প্রেরণকারী ব্যবহার করতে পারেন । আপনি যদি সঠিক থ্রেডে আপনার কোড প্রয়োগের গ্যারান্টি দিতে চান তবে এটি কার্যকর হতে পারে। উদাহরণ স্বরূপ:

DispatchQueue.main.async {
    dispatchPrecondition(condition: .onQueue(DispatchQueue.global())) // will assert because we're executing code on main thread
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.