1

ドキュメントによると、スレッドからロックし、別の rwlock からロック解除すると、未定義の動作が発生します。配列と2つのスレッドがあり、1つは割り当て、もう1つは割り当て解除します。これはサイクルで発生し、読み取り/書き込みを行うスレッドもいくつかありますが、重複することはないため、同期は必要ありません。問題は、読み取り/書き込みスレッドが、dealloc - alloc の間の時間枠で配列を使用しようとすることです。読み取り/書き込みスレッドに読み取りロックを使用し、配列をロックして解放スレッドに書き込み、割り当てスレッドで書き込みをロック解除することを考えていました。しかし、これは異なるスレッドで発生するため、未定義の動作になります。この場合、どのようなアプローチが適切でしょうか?

4

1 に答える 1

3

状態を格納する変数が必要です。その変数をロックで保護できます。したがって、スレッドが状態を確認または変更する必要がある場合、スレッドはロックを取得し、状態を確認または変更してから、ロックを解放します。

于 2014-12-18T08:25:24.857 に答える