私は Macruby でこれを行っていますが、ここではそれほど重要ではないと思います。
状態を辞書データ構造に格納するモデルがあります。同時操作でこのデータ構造を散発的に更新したいと考えています。GCDは、これら2つを含む、これに対するいくつかの可能な解決策を提供しているように私には思えます:
- 何らかのシリアル キューに送信されるブロック内のデータ構造にアクセスするコードをラップする
- 構造体にアクセスするときに必要に応じて待機/シグナル呼び出しを送信するクライアント コードで、GCD セマフォを使用する
最初のソリューションのキューが同期的に呼び出されると、セマフォ ソリューションとほとんど同じように見えます。これらのソリューションのいずれにも、私が見逃している明確な利点がありますか? 私が見逃しているより良い代替手段はありますか?
また、GCD で読み取り/書き込み (共有排他) ロックを実装するのは簡単ですか?