以下は私がインタビューで尋ねられた質問であり、この質問には多くの解決策があると思いますが、何が最善の解決策になるか知りたいです(そしてstackoverflowはこれに最適です:))。
Q:ツリーのような構造で、3つのスレッドがあります。次に、挿入、削除、ルックアップの3つの操作を実行する必要があります。これをどのように設計しますか?
私のアプローチ:挿入または削除で一度に1つのスレッドのみを実行したいので、挿入および削除操作にミューテックスを使用します。ルックアップの場合、3つのスレッドすべてが関数に入るのを許可しますが、今回は挿入および削除操作を実行できないように、カウント(セマフォのカウント)を保持します。同様に、挿入または削除操作が実行されている場合、挿入および削除の場合と同様に、スレッドはルックアップを実行できません。
今、彼は私に一度に1つのスレッドしか挿入できないので、異なるリーフ上の2つのノードを挿入する必要がある場合でも、私のアプローチでは一度に1つのスレッドを許可するので、これは行き詰まっていると私に質問しました。
私のアプローチは大丈夫ですか?他のアプローチは何でしょうか?