4

クラスにスレッドセーフを追加するために GCD を使用しています。

クラスの一部のパブリック メソッドが、クラス内の他のパブリック メソッドによって呼び出されます。ただし、これは再入可能ロックの問題につながります。公開されている適切なメソッドを同期 GCD ブロック (場合によっては) で保護すると、再利用によって、現在のキューで別の同期ブロックを実行しようとすることがあります。 、デッドロックにつながります。

最もエレガントなソリューションは何ですか? 明白なアプローチは、適切なメソッドの内部バージョン (GCD ブロックなし) と、内部メソッドへの呼び出しをラップする GCD ブロックを持つメソッドの外部パブリック バージョンを用意することです。これは私にはあまり適切ではありません。

4

2 に答える 2