2

独自のスレッド(現在NSThreadを使用)に配置したサードパーティのC++ライブラリを呼び出しています。そのスレッドの実行を停止する機能をユーザーに提供したいと思います。(私はこれが引き起こす可能性のあるすべての問題をよく知っていますが、それでもそうしたいと思います。)

Appleのスレッドプログラミングガイドによると、Cocoaにはそうする可能性があります。これはiPhoneにも当てはまりますか、それとも目標を達成するためにPosixスレッドに依存する必要がありますか?

乾杯

MrMage

4

1 に答える 1

11

スレッドの実行を停止する正しい方法は、実行を停止するようにうまく依頼することです。次に、スレッドで、そのような要求をリッスンし、適切なタイミングでそれらに従います。

あなたがリンクしたまさにそのページが言うように:

Cocoa、POSIX、およびMultiprocessing Servicesは、スレッドを直接強制終了するためのルーチンを提供していますが、そのようなルーチンの使用は強くお勧めしません。スレッドを強制終了すると、そのスレッドがそれ自体の後でクリーンアップされるのを防ぎます。スレッドによって割り当てられたメモリがリークする可能性があり、スレッドによって現在使用されている他のリソースが適切にクリーンアップされず、後で潜在的な問題が発生する可能性があります。

操作の途中でスレッドを終了する必要があると予想される場合は、キャンセルまたは終了メッセージに応答するようにスレッドを最初から設計する必要があります。長時間実行される操作の場合、これは定期的に作業を停止し、そのようなメッセージが到着したかどうかを確認することを意味する場合があります。スレッドに終了を求めるメッセージが届いた場合、スレッドは必要なクリーンアップを実行して正常に終了する機会があります。それ以外の場合は、単に作業に戻って次のデータチャンクを処理する可能性があります。

于 2009-08-29T18:12:56.520 に答える