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().
Пример макрса для многопоточности readlock, writelockАвтор: hi_octane
Дата: 01.11.10
, одного из первых, использованного в реальном проекте. Оно уже годы в продакшене, а на C# как обычно даже в планах нету. Вот так и решает, макрос за макросом, и рукописного кода надо писать всё меньше, на задачу времени остаётся всё больше.