iOS の pthread とディスパッチ キューの間の関連付けを見つけようとしています。たとえば、pthread_t
オブジェクトが与えられた場合、関連するディスパッチ キューを特定することは可能ですか?
私はあらゆる種類の API を見てき*get_current_*()
ました。それらはすべて、コンテキストを設定するために以前に使用されたキーを認識している場合、またはラベルが必要なディスパッチ キューに対応するもの*get_specific_*()
を既に持っている場合にのみ役立ちます。dispatch_queue_t
私が探しているのは、すべてのディスパッチ キュー (プライベート/シリアル キュー - アプリケーション内で作成されたもの) のリストを取得することだけです。これにより、何らかの方法でdispatch_queue_t
オブジェクトを取得し、それらを使用してそのアプリケーションのスレッドとの関連付けを見つけることができます。処理して名前を出力します。
EDIT(Dasの提案を考慮した後に得た解決策 - thread_info()
):ディスパッチキュー名を取得しました!各スレッドthread_info()
を取得するために使用する必要がありました。次に、typedispatch_qaddr
のコンテンツを処理し、必要に応じて に渡してラベルを取得します。ここでの秘訣は、特定の時点でスレッドがディスパッチ キューのコード ブロックを実行しているかどうかを安全な方法でチェックすることです。そうしないと、渡したオブジェクトに対して実行される内部操作によって、アプリケーションがクラッシュする可能性があります。そのため、プラットフォーム固有の API を使用して、結果のオブジェクトのコンテンツが適切なサイズであることを検証する必要がありました。dispatch_qaddr
uint64_t
(dispatch_queue_t *)
dispatch_queue_get_label()
dispatch_queue_get_label()
sizeof(dispatch_queue_t)
dispatch_queue_t
不透明タイプです。ええ、私は私が望んでいたものを見ることができてうれしいです!乾杯!\m/