সুইফট 3-এ বর্তমান থ্রেড কোনটি আমি পরীক্ষা করব?
সুইফ্টের পূর্ববর্তী সংস্করণগুলিতে এটি করা দ্বারা বর্তমান থ্রেডটি প্রধান ছিল কিনা তা পরীক্ষা করা সম্ভব ছিল:
NSThread.isMainThread()
সুইফট 3-এ বর্তমান থ্রেড কোনটি আমি পরীক্ষা করব?
সুইফ্টের পূর্ববর্তী সংস্করণগুলিতে এটি করা দ্বারা বর্তমান থ্রেডটি প্রধান ছিল কিনা তা পরীক্ষা করা সম্ভব ছিল:
NSThread.isMainThread()
উত্তর:
দেখে মনে হচ্ছে এটি কেবল Thread.isMainThreadসুইফ্ট 3-এ রয়েছে।
Thread.isMainThreadআপনি বর্তমানে ইউআই থ্রেডে রয়েছেন কিনা তা বোঝাচ্ছে এমন একটি বুলিয়ান ফিরিয়ে দেবে। তবে এটি আপনাকে বর্তমান থ্রেড দেবে না। এটি কেবলমাত্র আপনিই বলবেন আপনি মূলতে আছেন কি না।
Thread.current আপনি চালু বর্তমান থ্রেড ফিরিয়ে দেবে।
আমি থ্রেড এবং সারি মুদ্রণের জন্য একটি এক্সটেনশন করেছি:
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
সুইফট 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)
জিসিডি ব্যবহার করার সময় আপনি আরও কার্যকর করার জন্য প্রয়োজনীয় প্রেরণের শর্তটি পরীক্ষা করতে প্রেরণকারী ব্যবহার করতে পারেন । আপনি যদি সঠিক থ্রেডে আপনার কোড প্রয়োগের গ্যারান্টি দিতে চান তবে এটি কার্যকর হতে পারে। উদাহরণ স্বরূপ:
DispatchQueue.main.async {
dispatchPrecondition(condition: .onQueue(DispatchQueue.global())) // will assert because we're executing code on main thread
}
সর্বশেষতম সুইফ্ট 4.0 ~ 4.2 এ, আমরা ব্যবহার করতে পারি Thread.current
সম্পাদনের বর্তমান থ্রেড উপস্থাপন করে থ্রেড অবজেক্টটি দেখায় See