ロックがどのように機能するかを理解しようとしています。
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()その言葉が何を意味するのか正確にはわかりません。