私はよく「スレッドセーフ」という重要な用語に遭遇し、その意味を疑問に思う。たとえば、FirebaseまたはRealmでは、一部のオブジェクトは「スレッドセーフ」と見なされます。何がスレッドセーフであることが正確にはどういう意味ですか?iOSで何かスレッドセーフであるとはどういう意味ですか?
答えて
答えを検索した後、私はthis Webサイトから次のことを得たが:
スレッドセーフなコードが安全に何らかの問題(データの破損、クラッシュ、など)を発生させることなく、複数のスレッドまたは同時タスクから呼び出すことができます。スレッドセーフではないコードは、一度に1つのコンテキストでのみ実行する必要があります。スレッドセーフなコードの例はlet a = ["thread-safe"]です。この配列は読み取り専用で、複数のスレッドから同時に問題なく使用することができます。一方、var a = ["thread-unsafe"]で宣言された配列は変更可能であり、変更することができます。つまり、複数のスレッドが予期しない結果で同時にアレイにアクセスしたり変更したりすることができるため、スレッドセーフではありません。変更可能で本質的にスレッドセーフではない変数およびデータ構造は、一度に1つのスレッドからのみアクセスする必要があります。
複数のスレッドがメソッドを呼び出したり、オブジェクトのメンバーデータに問題なくアクセスできる場合、オブジェクトはスレッドセーフであると言われます。 「問題」は広義には、1つのスレッドからのみアクセスされた場合の動作からの逸脱であると定義されています。 2つのスレッドがそのステートメントが発生することがありますし、一つのスレッドがi
の元の値を読んで、それをインクリメントし、その後、書き戻し可能性があるため、通常の整数i
のコードi = i + 1
を含むオブジェクトがは、スレッドセーフではありません例えば
その単一増分値。すべて同時に別のスレッドとなります。このようにして、i
は1回だけインクリメントされ、2回インクリメントされるはずです。
スレッド不安 - >任意のオブジェクトが同時に複数のスレッドで変更を許可する場合。 スレッドセーフ - >同時に複数のスレッドで変更が許可されていないオブジェクト。一般にスレッドセーフです。
- 1. ディレクトリ名とは何ですか? 'と '..'という意味で、faDirectoryはどういう意味ですか?
- 2. iOSクラッシュレポート「ハードウェアモデル」とはどういう意味ですか?
- 3. バベルプリセットとは何ですか?ステージとはどういう意味ですか?
- 4. 「ライブラリモード」でiOSモジュールを作成するとはどういう意味ですか?
- 5. iOS Paypal Braintree:サーバーのセットアップはどういう意味ですか?
- 6. %%はどういう意味ですか?
- 7. 「iOS APIリファレンス」では、「受信者」とはどういう意味ですか?
- 8. linuxの意味はどういう意味ですか?
- 9. キーワード「プライベート」がクラスレベルでプライベートであるとはどういう意味ですか?
- 10. Googleアナリティクスでgoogle.comがブラウザであるとはどういう意味ですか?
- 11. Javaで何か「追跡」するのはどういう意味ですか?
- 12. (?i)\\は何ですか?正規表現はどういう意味ですか?
- 13. 角4は何ですか?表記はどういう意味ですか?
- 14. defmethodでは ":before:after:around"とはどういう意味ですか?
- 15. どういう意味ですか?:意味ですか? Apacheの設定ファイルで
- 16. どういう意味ですか? OR?
- 17. "javascript://"とはどういう意味ですか?そのコードには意味:
- 18. データクラスという用語はどういう意味ですか?
- 19. インターフェイスもタイプであるとはどういう意味ですか?
- 20. メンバ関数がvolatileであるとはどういう意味ですか?
- 21. 両親が同じチェンジセットであるとはどういう意味ですか?
- 22. Webサービスが非同期であるとはどういう意味ですか?
- 23. Kornシェルのメタキャラクタ:!(何らかのテキスト)とはどういう意味ですか?
- 24. シェルスクリプトで 'exit 0'とはどういう意味ですか?
- 25. nHibernateで永続性とはどういう意味ですか?
- 26. x^2とはどういう意味ですか? Pythonで
- 27. httpstransportでrequireClientCertificateとはどういう意味ですか?
- 28. 「暗号で安全」とはどういう意味ですか?
- 29. prometheusで "instrument"とはどういう意味ですか
- 30. jqgridで "forceFit:true"とはどういう意味ですか?
スレッドセーフについてのコメントはこちらからご覧ください。関連性。 http://stackoverflow.com/questions/588866/whats-the-difference-between-the-atomic-and-nonatomic-attributes/589392#589392 – bbum
私の答えの最後にスウィフトの例を含め、ここでいくつかの同様の議論: http://stackoverflow.com/a/34386923/23649 – jtbandes