Re[15]: Nemerle через 5 лет - выстрелит или скончается?
От: bazis1 Канада  
Дата: 29.09.14 02:38
Оценка: +1
Здравствуйте, hi_octane, Вы писали:

B>>Какие проблемы конечного пользователя решают ваши волшебные макросы?


_>Ну вот пример — прямо сейчас async/await не совместим с lock в C#. Вообще. Т.е. методы содержащие lock() { ... await ... } не будут компилироваться. Имея макросы, ты бы мог решить эту проблему десятком способов, например взять с гугла любой AsyncMutex, сделать свой lock принимающий этот AsyncMutex, и всё готово. Оставаясь на C# ты просто ждёшь, непонятно чего, так как эта фича пока даже не заявлена в C#6, и неизвестно будет ли вообще когда-то заявлена. Как C# решает проблему того что async/await есть, а внятной синхронизации нет? using(IDispoableAsyncMutex)? try{ await AsyncMutex } finnaly { AsyncMutext.Release() } ? Использовать scheduler-обёртку над защищаемым объектом, и стартовать таски в нём? Методы один хуже другого, и все дико не наглядные, тупо мешающие читать код, по сравнению с lock().

Async/await вроде бы сделан специально для высокоуровневых вещей, где явная синхронизация не нужна, не? Ладно, допустим я ошибаюсь, проведем мысленный эксперимент — опрос среди пользователей C#: нужна ли вам поддержка lock() в асинхронных методах? С 3мя вариантами: нужна в ежедневных задачах, нужна была пару раз, ни разу не сталкивался с необходимостью. Как думаете, наберет первый вариант больше 1%?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.