ロックがどのように機能するかを理解しようとしています。
C ++で本当に単純なロックを実装したいとしましょう
class Resource{
public:
bool lock();
void unlock();
... methods to change/read the Resource ...
private:
bool isLocked;
}
リソースのユーザーは を呼び出しlock()
、isLocked
が true の場合はlock()
false を返し、リソースのユーザーは待機するか、別のことを行う必要があります。isLocked
が false の場合、true にlock()
設定isLocked
し、true を返します。その後、呼び出し元はリソースに対して必要なことを何でも行うことができます。unlock()
その後、リソースを呼び出しisLocked
て false に設定します。
しかし、リソースの 2 人のユーザーがlock()
まったく同時に呼び出しを行った場合はどうなるでしょうか? このような状況はめったにありませんか?より正式には、これには操作を「アトミック」にすることが含まれると思いますが、lock()
その言葉が何を意味するのか正確にはわかりません。