私はマルチスレッドについて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. リクエストレスポンモデル/同期/非同期/イベントドリブン
- 3. 非同期ソケットと同期
- 4. 同期と非同期のアクティビティ
- 5. 非同期ループ内の非同期メソッド
- 6. 同期非同期入力の処理
- 7. 同期対非同期データベースへのアクセス
- 8. リアルタイムアプリケーションの非同期対同期ソケットサーバー
- 9. cコールの同期はコマンドの同期と同じですか?
- 10. GPUの同期
- 11. ループスレッドの同期
- 12. サーバーファームの同期
- 13. モバイルデータベースの同期
- 14. サーバークライアントの同期
- 15. コンテキストオブジェクトの同期
- 16. 「チームの同期」
- 17. データベースの同期
- 18. Silverlightの同期
- 19. USB - 同期vs非同期vsセミロシンク
- 20. 非同期ソケットと同期ソケット
- 21. Meteor.methodsを同期非同期にする
- 22. MeteorJS非同期コード同期Meteor.methods関数
- 23. 春非同期 - 非同期豆に
- 24. 同じコントローラ内の非同期アクションメソッドと同期アクションメソッド
- 25. 同期
- 26. ユーザーモードの同期とカーネルモードの同期(LinuxとWindowsの場合)
- 27. 同期と非同期AJAXを同時に実行する
- 28. MVCの非同期
- 29. jQueryコールの同期
- 30. 同期の問題
ロックが最も簡単な方法はありませんか? – CodaFi
プロパティ宣言で "非原子"を指定しないと、コンパイラはバックグラウンドでロックコードを挿入します。これはあなたが '@合成 'していると仮定しています。これを明確にするために編集された答え。 – MechEthan
そうですが、私はプロパティ宣言に "非原子的"属性を含めませんでした。しかし、値は1つのスレッドでのみ変更できますが、主なものや必要なものでは変更されません。 – Alexander