POSIXスレッドを作成すると、システムはNSWillBecomeMultiThreadedNotificationを送信しますか?

StackOverflow https://stackoverflow.com/questions/1608230

  •  05-07-2019
  •  | 
  •  

質問

試しましたが、この通知は来ないと思います。それは通常のケースですか?

役に立ちましたか?

解決

いいえ、この通知は NSThread によって送信されます。通常のpthreadを使用している場合、送信されません。

他のヒント

ドキュメント

  

Cocoaフレームワークの保護   マルチスレッドアプリケーション、Cocoa   フレームワークはロックおよびその他の形式を使用します   を確保するための内部同期の   彼らは正しく動作します。防ぐために   これらのロックによりパフォーマンスが低下する   ただし、シングルスレッドの場合は、   Cocoaは、   アプリケーションは最初の新しいを生成します   NSThreadクラスを使用したスレッド。もし   POSIXのみを使用してスレッドを生成する   スレッドルーチン、Cocoaは   必要な通知を受け取る   あなたのアプリケーションが今であることを知っています   マルチスレッド。それが起こると、   ココアを含む操作   フレームワークは不安定化またはクラッシュする可能性があります   アプリケーション。

     

Cocoaに意図することを知らせる   複数のスレッドを使用する必要があるすべて   doは、を使用して単一のスレッドを生成します   NSThreadクラスとそのスレッドにしましょう   すぐに終了します。あなたのスレッドエントリー   ポイントは何もする必要はありません。ただ   を使用してスレッドを生成する行為   NSThreadは、   Cocoaフレームワークに必要なロック   配置されています。

     

Cocoaが考えるかどうかわからない場合   アプリケーションがマルチスレッドまたは   ではなく、isMultiThreadedを使用できます   チェックするNSThreadのメソッド。

NSWillBecomeMultiThreadedNotification Foundation に追加されてから、「時間が変更された」ことにも注意する必要があります。マルチスレッドプログラミングは、現在でははるかに一般的です。現在、この通知がアプリに投稿されることは決してないという可能性さえあります。最近のアプリは、おそらくコードの一部が実行される前に、人生のごく初期にマルチスレッドになります。また、ドキュメントから:

  

Cocoaライブラリを開発している場合、   のオブザーバーとして登録できます   その    NSWillBecomeMultiThreadedNotification   あなたが通知されたい場合   アプリケーションはマルチスレッドになります。君は   これを受け取ることに頼るべきではない   ただし、通知   ライブラリコードの前にディスパッチされます   これまでに呼び出されました。

NSWillBecomeMultiThreadedNotification に依存する代わりに、 [NSThread isMultiThreaded] を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top