OSを書くために読み終えました。今、私はそれを複数のスレッドに分割しています。スレッドを持っているどのようにそれまでは待つ他はすべて
この時点では、すべてunordered_mapの周りを回転しています。マップを変更しているスレッドは1つだけです。
したがって、基本的に1つの書き込みは複数回読み込みます。
これまで書き込みでmtx.lockとmtx.unlockを実装していましたが、書き込みプロセスが行われている間は誰も読み取れません。
誰かが読んでいる間に書き込みが行われると問題が発生します。
理論的には、すべての読み取りで同じmtx.lockとmtx.unlockを置くことができ、問題を解決できるはずです。しかし、これは、私が必死に避けようとしていることです。何故なら、データが読み込まれるポイントがたくさんあり、誰かのために私にとって本当に不便な100以上のロックを実装する必要があるからです。
質問: 誰もが読み込みを完了してからロックを呼び出して書き込みを行うまで、書き込みを行っているスレッドを待機させることはできますか?もちろん、これをやり遂げるにはどうすればいいでしょう。
このように、読み込みの優先度を上げたい(たとえデータが古くても)。 –
はいデータが古くなっても問題ありません。スレッドを読み込み可能にする必要があります。何の問題も起こさずに。そして、すべての読み込みにロックを実装するのではなく、書き込みスレッドが誰でも読み書きを完了しているかどうかを確認できるかどうかを確認したかったのです。 – ChronicUser
"理論的には、すべての読み込みに同じmtx.lockとmtx.unlockを置くことができると理解しています - 理論的には?先ほどの2段落では、「私はこれまでに読んだところにmtx.lockとmtx.unlockを実装しました」と言っています。 – MSalters