# 現在の実行スレッドと Dispatch Queue を出力する関数

デバッグ中に、処理がメインスレッドで動いているかと、どのDispatch Queueで動いているかを確認したかった。 Thread.isMainThread と現在のQueueのラベルを出力する関数を用意した。

# タグ・メインスレッドかどうか・Queueラベルを1行で出力する

// 1) Utilityとしてどこからでも呼べるように置く(例: DebugUtils.swift)
import Dispatch

@inline(__always)
func logThread(_ tag: String = "") {
    let label = String(cString: __dispatch_queue_get_label(nil))
    print("[\(tag)] isMain=\(Thread.isMainThread) queue=\(label)")
}

出力される値は次の3つである。

出力 取得方法 用途
tag 引数で指定する ログの発生箇所を識別する
isMain Thread.isMainThread メインスレッドかを確認する
queue __dispatch_queue_get_label(nil) 処理中のキューを確認する