3

内部でいくつかのスレッドを作成する、購入したメディア ストリーミング SDK ライブラリから C++ コールバックを取得します。

具体的には、ライブラリがメッセージをログに記録したいときにコールバックを受け取ります。自動解放プールがある NSThread のコンテキストで呼び出されることもありますが、自動解放プールを持たない他のスレッドから呼び出されることもあります。呼び出しスレッドの一部はリアルタイム スレッド (オーディオ グラビングなど) であるため、パフォーマンスが重要です。

NSThread (アプリケーションのメイン スレッドまたは他の NSThread) 内で呼び出された状況と、SDK ライブラリによって作成された内部の "C++ のみ" のスレッドを区別するにはどうすればよいですか?

Apple のドキュメントには、使用時に何が起こるかはわかりません

[NSThread 現在のスレッド]

別の種類のスレッドのコンテキストにいるとき、および NSThread で pthreadSelf() または同様の API を呼び出しているときに何が起こるか。

さらに、可能であれば自動解放プールをそれらの内部スレッドに接続すること、および時々それらを排出することについてのアイデアを聞きたいです。

ありがとう。

4

1 に答える 1

3

NSThreadは pthread のラッパーであるため、スレッドが、pthread、GCD、または C++ スレッド APIpthread_selfを使用して作成された場合、常に有効なスレッド オブジェクトを返します。NSThread

[NSThread currentThread]NSThreadまた、スレッドが API を使用して作成されていない場合でもオブジェクトを返し、NSThreadパブリック API を使用すると、返されたオブジェクトが単なるプロキシなのか「実際の」オブジェクトなのかを判断できませんNSThread

@autoreleasepoolディレクティブを使用して、軽量の自動解放プールを生成できます。

于 2013-02-05T06:01:15.193 に答える