String { return "👾 : " + Thread.current.threadName + "\n🚥 : " + Thread.current.queueName + "\n" }"> String { return "👾 : " + Thread.current.threadName + "\n🚥 : " + Thread.current.queueName + "\n" }"> String { return "👾 : " + Thread.current.threadName + "\n🚥 : " + Thread.current.queueName + "\n" }">
extension Thread {
open var threadName: String {
if isMainThread {
return "main"
} else if let threadName = Thread.current.name, !threadName.isEmpty {
return threadName
} else {
return description
}
}
open var queueName: String {
if let queueName = String(validatingUTF8: __dispatch_queue_get_label(nil)) {
return queueName
} else if let operationQueueName = OperationQueue.current?.name, !operationQueueName.isEmpty {
return operationQueueName
} else if let dispatchQueueName = OperationQueue.current?.underlyingQueue?.label, !dispatchQueueName.isEmpty {
return dispatchQueueName
} else {
return "n/a"
}
}
}
func currentThreadInfo() -> String {
return "👾 : " + Thread.current.threadName + "\\n🚥 : " + Thread.current.queueName + "\\n"
}