Что же именно делает lock? C#

Периодически сталкиваюсь с кодом вида

public void QueueOnMainThread(Action action)
{
    lock (actions)
    {
        actions.Add(action);
    }
}

lock закрывает лист actions от изменений и добавляет туда новое значение. Но что будет если в этот же момент в другом потоке вызовется этот код? Если actions уже заблокирован, то мы просто не выполним добавление нового значения, проигнорируем это? Или lock ждет, пока выполнится то что внутри lock из прошлого потока, и потом всё таки выполнит свое? Т.е. lock - создает и выполняет очередь.

Так что верно? lock - блокирует выполнение(аналог return) или ставит в очередь?


Ответы (0 шт):