C Sharp/Ключові слова/lock
< C Sharp | Ключові слова
Блок lock гарантує що інший потік не зможе виконати операції цього блоку, доки інший потік не звільнить цей блок і не припинить виконання операцій. Потік, який намагається увійти в цей блок, буде очікувати своєї черги на виконання доки блок не буде звільнено. Оператор lock використовує об'єкти синхронізації, в якості якого в багатьох випадках може використовуватись this, або у випадку коли необхідно виконати блок у методі статичного класу, або захистити статичну змінну використовують typeof(ім'я_класу).
Синтаксис: |
---|
lock(вираз) блок_команд
|
Приклад:
class User
{
String name = "no name";
public User(String _name)
{
name = _name;
}
public void PrintName()
{
lock (this)
{
Console.WriteLine("User name : " + name);
}
}
public void setName(String _name)
{
lock (this)
{
name = _name;
}
}
}