ロックの仕組みを理解しようとしています。ロックの実装
のは、リソースの利用者がlock()
を呼び出し、isLocked
場合は、その後lock()
戻り偽、真であり、資源のユーザーが持っているC++
class Resource{
public:
bool lock();
void unlock();
... methods to change/read the Resource ...
private:
bool isLocked;
}
に私は本当にシンプルなロックを実装したいとしましょう待つか、何か他のことをしてください。 isLocked
がfalseの場合、lock()
はisLocked
をtrueに設定し、trueを返します。呼び出し元は、リソースに必要なものをすべて実行できます。その後、リソース上でunlock()
を呼び出してisLocked
をfalseに設定します。
しかし、リソースの2人のユーザーが正確に同じ時刻にlock()
を呼び出した場合はどうなりますか?このような状況はほとんど起こりませんか?もっと正式には、これはlock()
の操作を「アトミック」にすることですが、その単語の意味を正確には分かりません。
アトミシティは 'lock()'メソッド全体、または 'lock()'メソッドの特定のステートメントの特徴となるでしょうか?最初のオプションは使いやすくなっています。 – newprogrammer
これはあなたの実装に非常に似ています。本当に基本的なレベルでは、アトミックな単一のマシン命令だけです。あなたは、適切なコードを書くことによって、他のレイヤーを通してそれを拡張することができます。 –