Гарантия последовательного выполнения метода
От: vaa  
Дата: 15.04.22 08:35
Оценка:
Есть метод который может вызываться из разных потоков.
Нужно гарантированно запретить параллельное выполнение 2-х и более раз.

UPDATE

Нашел
SemaphoreSlim
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 15.04.2022 8:53 Разраб . Предыдущая версия .
Re: Гарантия последовательного выполнения метода
От: Kolesiki  
Дата: 15.04.22 08:45
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Есть метод который может вызываться из разных потоков.

vaa>Нужно гарантированно запретить параллельное выполнение 2-х и более раз.

Шутишь или вчера в C# попал? Обычное ключевое слово lock.
Re[2]: Гарантия последовательного выполнения метода
От: vaa  
Дата: 15.04.22 08:47
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Шутишь или вчера в C# попал? Обычное ключевое слово lock.


честно забыл.
а без лока?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Гарантия последовательного выполнения метода
От: vaa  
Дата: 15.04.22 08:49
Оценка:
Здравствуйте, Kolesiki, Вы писали:


K>Шутишь или вчера в C# попал? Обычное ключевое слово lock.


печалька

невозможно ожидание в теле lock.

☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Гарантия последовательного выполнения метода
От: bnk СССР http://unmanagedvisio.com/
Дата: 15.04.22 08:54
Оценка: 6 (1)
Здравствуйте, vaa, Вы писали:

vaa>

vaa>невозможно ожидание в теле lock.


https://blog.cdemi.io/async-waiting-inside-c-sharp-locks/
Re: Гарантия последовательного выполнения метода
От: Mr.Delphist  
Дата: 15.04.22 10:30
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Есть метод который может вызываться из разных потоков.

vaa>Нужно гарантированно запретить параллельное выполнение 2-х и более раз.

[MethodImpl(MethodImplOptions.Synchronized)]
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.methodimploptions?view=net-6.0

    [MethodImpl(MethodImplOptions.Synchronized)]
    public void DoSomething() 
    {
        ...
    }


Единственно надо проверить доступно ли это на целевом фреймворке — помню, раньше сталкивался с таким во времена NET 4.x, Silverlight, Windows Phone...
Re: Гарантия последовательного выполнения метода
От: Ночной Смотрящий Россия  
Дата: 15.04.22 10:41
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Нужно гарантированно запретить параллельное выполнение 2-х и более раз.


Что значит запретить? Что должен получить поток, попытавшийся выполнить уже выполняющийся метод?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Гарантия последовательного выполнения метода
От: vaa  
Дата: 15.04.22 13:54
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, vaa, Вы писали:


vaa>>Нужно гарантированно запретить параллельное выполнение 2-х и более раз.


НС>Что значит запретить? Что должен получить поток, попытавшийся выполнить уже выполняющийся метод?


Гарантия последовательного выполнения [асинхронного] метода, если его дернуть дважды/трижды...

☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Гарантия последовательного выполнения метода
От: Kolesiki  
Дата: 15.04.22 14:22
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, Kolesiki, Вы писали:



K>>Шутишь или вчера в C# попал? Обычное ключевое слово lock.


vaa>печалька

vaa>

vaa>невозможно ожидание в теле lock.


Причём тут "ожидание"? И что это значит? Ты спросил про блокировку параллельного исполнения — тебе дали решения. Все последущие оправдания — доказательство неумения формулировать проблему. Начни с задачи, а не ТВОЕГО видения решения!
Re[4]: Гарантия последовательного выполнения метода
От: vaa  
Дата: 15.04.22 14:39
Оценка: -1
Здравствуйте, Kolesiki, Вы писали:

K>Здравствуйте, vaa, Вы писали:


vaa>>Здравствуйте, Kolesiki, Вы писали:



K>>>Шутишь или вчера в C# попал? Обычное ключевое слово lock.


vaa>>печалька

vaa>>

vaa>>невозможно ожидание в теле lock.


K>Причём тут "ожидание"? И что это значит?


это сообщение компилятора.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Гарантия последовательного выполнения метода
От: Ночной Смотрящий Россия  
Дата: 15.04.22 15:03
Оценка: +1
Здравствуйте, vaa, Вы писали:

vaa>

vaa>Гарантия последовательного выполнения [асинхронного] метода, если его дернуть дважды/трижды...


Это все слишком расплывчато. Под этот вопрос подходячт от банального lock до решений вроде Кафки и RMQ.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Гарантия последовательного выполнения метода
От: Ночной Смотрящий Россия  
Дата: 15.04.22 15:05
Оценка: :)
Здравствуйте, vaa, Вы писали:

vaa>это сообщение компилятора.


await c lock несовместим. Ты ж не сказал о том что у тебя await есть, опять приходится из тебя клещами вытаскивать.
https://github.com/rsdn/CodeJam/blob/master/CodeJam.Main/Threading/AsyncLock.cs
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.