試験問題:
リソースは、アクセスが先着順で行われるように、N個のスレッド間で共有されます。先着順のポリシーを実装する方法を説明します。
私の答えは次のようになります(注:コースはJavaベースです):
セマフォ(バイナリ)を使用して、共有リソースへのアクセスを制御します。次に、セマフォにアクセスするためのフィーダークラス/スレッドを作成します。フィーダースレッドはFIFOキューを使用して、先着順で実装します。セマフォが解放されると、スレッドとキューの先頭が共有リソースにアクセスできるようになります。
私は上記のアプローチを紙に書き留めたところですが、うまくいくようです。
質問は20点の質問で8点の価値があるので、満点の場合は使用new ReentrantLock(true)
するだけで十分ではないかと思います。
皆さんはどう思いますか?