Re[5]: .net core и async lock
От: artelk  
Дата: 11.04.21 12:11
Оценка:
Здравствуйте, vdimas, Вы писали:

V>SemaphoreSlim имеет унутре очередь ожидающих "потоков" (т.е. задач), но эта очередь организована через прокси-задачи.

V>Т.е. каждый вызов WaitAsync создаёт и регистрирует еще один объект Task, что считается тяжеловесным для такой операции.

Не каждый. Если семафор свободен, возвращается переиспользуемый s_trueTask.
А если занят, то полюбому же придется создавать какой-то новый task-like объект в куче и возвращать его (завернутым в ValueTask и т.п.).
Можно подумать в сторону пула таких объектов, но на стороне клиентского кода потребовалось бы явно возвращать их в пул, а это менее удобно.
Если ты что-то другое имел ввиду, просьба развернуть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.