私はマルチスレッドについてios sdkのいくつかのものを読みましたが、まだ問題の答えが見つかりませんでした: メインスレッドでは、プログラムはスレッド内のいくつかのことを行いますプロパティの値が変更された場合、他のスレッドは変更された値を必要とします。 プロパティやフィールドの値を1つのスレッドで変更して、すべてのスレッドで変更できるようにするにはどうすればよいですか?プロパティ/フィールドスレッドの同期
0
A
答えて
3
単一のオブジェクトのプロパティを変更すると、基本的に「すべてのスレッド」の値が変更されます。オブジェクトを自分で作成しない限り、スレッド固有のコピーはありません。
マルチスレッドプログラムでは、2つのスレッドが同じメモリ(あなたの場合はプロパティ)に同時にアクセス/書き込みしようとしていないことを確認することが大きな課題です。問題のあなたのプロパティでこれを行う最も簡単な方法(しかし、必ずしも最も効率的ではない、または馬鹿な方法)は、プロパティ宣言から "非原子的"属性を除外することです。 (EDIT:これは、カスタムオーバーライドゲッターやセッターを持っていたり@dynamic
をあなたのプロパティを実装するために@synthesize
を使用して、していないと仮定し)
マルチスレッドは、大きなトピックのビットがここにカバーするものであるが、Appleのドキュメントがありますより多くの情報を開始するには良い場所:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html
関連する問題
- 1. 非同期イベントの同期
- 2. Node.jsの非同期/同期
- 3. 同期スレッドでの同期の問題
- 4. RxSwiftとの非同期ネットワークコールの同期
- 5. RxJSとの非同期アクションの同期
- 6. 非同期/同期ループNode.js
- 7. 非同期ソケットと同期
- 8. リクエストレスポンモデル/同期/非同期/イベントドリブン
- 9. Laravelジョブクエリ非同期/同期?
- 10. 同期非同期入力の処理
- 11. 非同期関数の同期例外
- 12. 同期対非同期データベースへのアクセス
- 13. リアルタイムアプリケーションの非同期対同期ソケットサーバー
- 14. 同期コードの非同期実行
- 15. 非同期マップの同期セクション
- 16. 同期と非同期のアクティビティ
- 17. ベクトル(同期)のArrayList(非同期)
- 18. 非同期ループ内の非同期メソッド
- 19. 非同期メソッドの非同期メソッド
- 20. Azureのオフライン同期APIでのローカル同期ストアの初期化
- 21. cコールの同期はコマンドの同期と同じですか?
- 22. Commitlog同期期間
- 23. 「チームの同期」
- 24. Silverlightの同期
- 25. ループスレッドの同期
- 26. クローンカルーセルの同期
- 27. jPanelの同期
- 28. 同期のXMLHttpRequest
- 29. GPUの同期
- 30. スプリングコントローラの同期
ロックが最も簡単な方法はありませんか? – CodaFi
プロパティ宣言で "非原子"を指定しないと、コンパイラはバックグラウンドでロックコードを挿入します。これはあなたが '@合成 'していると仮定しています。これを明確にするために編集された答え。 – MechEthan
そうですが、私はプロパティ宣言に "非原子的"属性を含めませんでした。しかし、値は1つのスレッドでのみ変更できますが、主なものや必要なものでは変更されません。 – Alexander