Умный синхронизатор
От: Barbar1an Украина  
Дата: 14.11.20 12:10
Оценка:
я ваще удивлюсь если такого вообще нигде нет, но щас речь про дотнет

пусть у нас куча методов которвые вызываются асинхронно

Method1()
{
    lock(resource)
    {
    }
}

Method2()
{
    Mathod1(); // норм
}

Method3()
{
    lock(resource)
    {
        .....
        Method1(); // дедлок, но нафига? если мы знаем, что если наш мютекс захвачен тем же потоком, то мы смело можем просто проигнорировать вложенный лок, ибо выполнение и так уже синхронное
        .....
    }
}



такое и руками наверно можно написать, но если в дотнете что такое готвое?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Отредактировано 14.11.2020 12:11 Barbar1an . Предыдущая версия .
Re: Умный синхронизатор
От: Andir Россия
Дата: 14.11.20 13:23
Оценка: 6 (1) +1
Здравствуйте, Barbar1an, Вы писали:

B>такое и руками наверно можно написать, но если в дотнете что такое готвое?


Дотнетовский lock позволяет повторный захват ресурса одному и тому же потоку, никакого дедлока не будет.
https://docs.microsoft.com/en-us/dotnet/api/system.threading.monitor.enter

It is legal for the same thread to invoke Enter more than once without it blocking; however, an equal number of Exit calls must be invoked before other threads waiting on the object will unblock.


--
С Уважением, Andir!
using( RSDN@Home 1.0.0 alpha 5 rev. 0) { /* Работаем... */ }
Re[2]: Умный синхронизатор
От: Barbar1an Украина  
Дата: 14.11.20 13:30
Оценка:
Здравствуйте, Andir, Вы писали:

A>Дотнетовский lock позволяет повторный захват ресурса одному и тому же потоку, никакого дедлока не будет.


тю блин, а мне показалось пару раз что локалось и я тут теперь мучаюсь, пасба)
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Отредактировано 17.11.2020 15:07 VladD2 . Предыдущая версия .
Re: Умный синхронизатор
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.20 14:47
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>такое и руками наверно можно написать, но если в дотнете что такое готвое?


Это называется "рекурсивный мьютекс (recursive mutex)".
Re[2]: Умный синхронизатор
От: Sharov Россия  
Дата: 23.11.20 19:30
Оценка:
Здравствуйте, Pzz, Вы писали:

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


B>>такое и руками наверно можно написать, но если в дотнете что такое готвое?


Pzz>Это называется "рекурсивный мьютекс (recursive mutex)".


reentrant lock же
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.