だから、私は本質的に生産者と消費者の問題を解決しようとしていますが、少し異なります.
- 「プロデューサー」スレッドはトークンを作成し、それらをリストに追加します
- 「消費者」スレッドは、トークンのリストをスキャンして処理します。
- 処理の結果、一部のトークンが削除される可能性があり、他のトークンはもう少し長く残る可能性があります。
したがって、主な違いは、必ずしも FIFO ではなく、プロデューサーの出力を任意の順序でリストから削除できることです。
現在、2 つのスレッド間で共有される構造の同期について考えています。ロックレス構造にしたい。ロックレス キューについては知っていますが、上記の理由により、キューはユース ケースにあまり適していません。次のように、これにはまだキューを使用できます。
- トークンをデキューして処理する
- まだ削除しない場合は、キューに戻します
とはいえ、できれば避けたいところです。理想的には、あるスレッドが追加でき、別のスレッドが任意の要素を削除できる、ロックのない単一リンク リストが必要です。それに関するいくつかの実装または論文を教えてもらえますか?