Re[32]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 14:15
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


V>>Да нет там косяков. Есть твоё неумение правильно готовить дотнет. Ты не знаешь, как он устроен и работает.


I>Ога, и InvalidOperation это тоже мой косяк ?


Естественно, твой. В оригинальном примере тот код заведомо запускается из потока GUI.

I>Смотри :


I>General execution context:

I>8994 collisions!
I>General execution context 19
I>GUI loop execution context:
I>9530 collisions!
I>GUI loop execution context 4

Вот тут я популярно объяснил, почему у тебя не получилось: http://www.rsdn.ru/forum/flame.comp/5339567.1
Автор: vdimas
Дата: 22.10.13

Сам факт подобного объяснения такому дотнетному гуру должен был сделать тебе стыдно.


V>>Это у тебя ошибки. У меня всё ОК. Попробуй еще раз, только внимательно.


I>Ты хотя бы InvalidOperation сначала пофикси,


Зачем его фиксить? У меня никаких InvalidOperation...


V>>Вместо того, чтобы подозревать, что у тебя "что-то пошло не так", ты решил подозревать окружающих. Ай, молодца!

I>Расскажи лучше, как в твоем коде _resource при "отсутствии" коллизий считается неверно ?

Оно считается верно. У нас же там честные задержки на обоих диспетчерах. Другое дело, что на одном диспетчере код получился с гонками, а на другом — нет.

I>Для истории, пофикшеный код, твои косяки помечены каментом // Буллшыт


Для истории тебе опять двойка. Вот тут коммент не нужен:
//MessageBox.Show(prefix + ":\n" + _collisions + " collisions!");


В общем, ты ниасилил... Еще немного подобного упрямства с твоей стороны и мне придется слать тебе тесты исключительно в бинарниках. )))
А там уже будешь разбирать их рефлектором или еще каким декомпиллером.
Re[32]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 14:23
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>Я тебе сначала пытался словами объяснить происходящее — ты не понял. Я тебе уже дал код — ты не смог его даже запустить правильно.


I>А что там запускать ? Скомпилил и запустил, получил InvalidOperation, полез смотреть и нашел еще два косяка, как то так


Скомпилить можно по-разному.


I>Тебе что, видео записать ?


Если я увидел слово "вывод в консоль", то всё с тобой сразу понятно и без видео. Ладно бы еще новичок так лажанулся...


V>>1. Ты сравнивал один и тот же диспетчер сам с собой, не сумев активизировать второй.

I>Я просто запустил твой код

Ну вот ты запустил, увидел InvalidOperation, ниче нигде не мелькнуло, а как же я его запускал без этой ошибки?
Ну клиника же... Не ожидал, прямо скажем...

Ну, ОК, в другой раз я буду высылать тебе настроенный файл проекта, если сам не справляешься.

===========================
Я уверен, ты давно уже понял, почему не смог запустить второй диспетчер, мог бы за 1 мин исправить и запустить... Это, типа, "а баба Яга против"? )))
Re[33]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 14:27
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>Ога, и InvalidOperation это тоже мой косяк ?


V>Естественно, твой. В оригинальном примере тот код заведомо запускается из потока GUI.


Чушь. Это возможно в твоем конкретном дотнете так, но гарантии этого нет.

I>>Смотри :


I>>General execution context:

I>>8994 collisions!
I>>General execution context 19
I>>GUI loop execution context:
I>>9530 collisions!
I>>GUI loop execution context 4

V>Вот тут я популярно объяснил, почему у тебя не получилось: http://www.rsdn.ru/forum/flame.comp/5339567.1
Автор: vdimas
Дата: 22.10.13


Это чушь. Правильный результат _resource будет 10000 , вот его и надо было обеспечить.

V>Сам факт подобного объяснения такому дотнетному гуру должен был сделать тебе стыдно.


Ты плохо понимаешь вопрос — от тебя требовалось пофиксить асинхронную часть, что бы выдать результат _resource == 10000

Но если у тебя на 10 строк 3 косяка, то это нереально

I>>Ты хотя бы InvalidOperation сначала пофикси,


V>Зачем его фиксить? У меня никаких InvalidOperation...


Тестировщикам ты так тоже говоришь ?

I>>Расскажи лучше, как в твоем коде _resource при "отсутствии" коллизий считается неверно ?


V>Оно считается верно. У нас же там честные задержки на обоих диспетчерах. Другое дело, что на одном диспетчере код получился с гонками, а на другом — нет.


Нет. Верный результат — 10000. Вот его и надо обеспечить. Покажи минимальный код который сохранит асинхронщину и даст этот результат.

V>Для истории тебе опять двойка. Вот тут коммент не нужен:

V>
V>//MessageBox.Show(prefix + ":\n" + _collisions + " collisions!"); 
V>


Смотри в конец строки:
 //MessageBox.Show(prefix + ":\n" + _collisions + " collisions!"); // шоб на форум постить

Похоже, ты ни код, ни каменты читать не умеешь
Re[33]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 14:45
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>А что там запускать ? Скомпилил и запустил, получил InvalidOperation, полез смотреть и нашел еще два косяка, как то так


V>Скомпилить можно по-разному.


Ну да, надо было компили твоим собственным компилером шарпа

I>>Тебе что, видео записать ?


V>Если я увидел слово "вывод в консоль", то всё с тобой сразу понятно и без видео. Ладно бы еще новичок так лажанулся...


И давно у тебя трейсы стали признаком консольного приложения ?

V>Ну вот ты запустил, увидел InvalidOperation, ниче нигде не мелькнуло, а как же я его запускал без этой ошибки?


Наверное никак ?

V>Ну клиника же... Не ожидал, прямо скажем...


Протри глаза перед тем как смотреть картинку

Re[34]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 15:25
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>Ну вот ты запустил, увидел InvalidOperation, ниче нигде не мелькнуло, а как же я его запускал без этой ошибки?

I>Наверное никак ?

Да по-всякому...

V>>Ну клиника же... Не ожидал, прямо скажем...


I>Протри глаза перед тем как смотреть картинку


Попробуй запустить по Ctrl+F5.

Щас чуть некогда, чуть позже доработаю пример, вставлю сбор статистики асинхронных потоков и вышлю уже бинарники. Уже самому интересно. У меня на 2-х машинах в WinForms в асинхронщину гарантированно заходит только один физический поток... Хотя он обслуживает несколько логических — асинхронных.

Сейчас убери тот _form.Close() и вообще переменную _form, попробуй вот этот вариант:
        [STAThread]
        static void Main(string[] args)
        {
            var task = Experiment("General execution context");
            task.Start();
            task.Wait();

            var form = new Form();

            form.Load += (o, a) => {
                var task2 = Experiment("GUI loop execution context");
                task2.Start();
                while (!task2.IsCompleted) Application.DoEvents();
                form.Close();
            };

            Application.Run(form);
        }


Запусти как detached from debugger.
Re[35]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 15:36
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Щас чуть некогда, чуть позже доработаю пример, вставлю сбор статистики асинхронных потоков и вышлю уже бинарники. Уже самому интересно. У меня на 2-х машинах в WinForms в асинхронщину гарантированно заходит только один физический поток... Хотя он обслуживает несколько логических — асинхронных.


Ты лучше покажи как забороть "коллизии" когда виндовый поток ровно один и пускает кучу асинхронных цепочек, т.е. что бы асинхронный код выдавал то же значение _resource что и синхронный аналог.

Вот это интересно, а твои виляния со стороны в сторону никому не интересны.
Re[34]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 15:44
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Это чушь. Правильный результат _resource будет 10000 , вот его и надо было обеспечить.


Это я даже обсуждать не намерен. Тебе дотнетная "линейная" асинхронщина дана как противопоставление событийному ООП-программированию. Кароч, тебе не надо хранить данные м/у вызовами "где-то", например, в полях класса, храни их в локальных переменных.

И да. Читая твой код мне ни разу в голову не пришло, что 10000 будет правильный ответ. Я ХЗ что надо вообразить о своей программе, чтобы дать такое предположение.

Кароч, закругляемся. Бинарник вышлю, мне уже самому интересно. Гонки ты путаешь с самой многопоточностью, поэтому обсуждать _resource бесполезно.

V>>Сам факт подобного объяснения такому дотнетному гуру должен был сделать тебе стыдно.


I>Ты плохо понимаешь вопрос — от тебя требовалось пофиксить асинхронную часть, что бы выдать результат _resource == 10000


Это ты формулируешь задачи. Как всегда — ближе к развязке. Для твоих целей объяви её локальной переменной. Для моих целей там никакой демонстрации гонок. В высланном примере я лишь показал разницу м/у вытесняющей и кооперативной многозадачностью. Больше ничего из твоего примера было не выжать. Для чего-то еще надо собрать статистику по потокам.

I>Но если у тебя на 10 строк 3 косяка, то это нереально


Косяк там, если умудриться запустить левый диспетчер.

I>Смотри в конец строки:

I>
I> //MessageBox.Show(prefix + ":\n" + _collisions + " collisions!"); // шоб на форум постить
I>

I>Похоже, ты ни код, ни каменты читать не умеешь

Ctrl+Insert при открытом MessageBox, Shift+Insert в форум.
Re[35]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 15:58
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это я даже обсуждать не намерен. Тебе дотнетная "линейная" асинхронщина дана как противопоставление событийному ООП-программированию. Кароч, тебе не надо хранить данные м/у вызовами "где-то", например, в полях класса, храни их в локальных переменных.


Шо, и базу со всеми таблицами и файл со всем контентом — все это в локальную переменную ? А ты, непростой !

V>И да. Читая твой код мне ни разу в голову не пришло, что 10000 будет правильный ответ. Я ХЗ что надо вообразить о своей программе, чтобы дать такое предположение.


Это про твои умения чтения кода, задача то избитая донельзя.

I>>Ты плохо понимаешь вопрос — от тебя требовалось пофиксить асинхронную часть, что бы выдать результат _resource == 10000


V>Это ты формулируешь задачи. Как всегда — ближе к развязке. Для твоих целей объяви её локальной переменной.


И всю базу данных поместить в эту локальную переменную ?

V>Ctrl+Insert при открытом MessageBox, Shift+Insert в форум.


Тебя это уже не спасёт — ты по наличию Trace "задетектил" консольное приложение
Re[36]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 15:59
Оценка:
Здравствуйте, Ikemefula, Вы писали:


V>>Щас чуть некогда, чуть позже доработаю пример, вставлю сбор статистики асинхронных потоков и вышлю уже бинарники. Уже самому интересно. У меня на 2-х машинах в WinForms в асинхронщину гарантированно заходит только один физический поток... Хотя он обслуживает несколько логических — асинхронных.


I>Ты лучше покажи как забороть "коллизии" когда виндовый поток ровно один и пускает кучу асинхронных цепочек,


Дык, он и ДОЛЖЕН так делать. Своими случайными задержками ты затем меняешь асинхронные нити местами. Тут тоже всё ОК, я ХЗ что тебе не так.

I>т.е. что бы асинхронный код выдавал то же значение _resource что и синхронный аналог.


Ответ — каждый асинхронный вызов не должен делить контекст с другими асинхронными вызовами. Достаточно помнить, что каждый асинхронный вызов одного и того же метода — это запуск ДРУГОГО потока исполнения. Даже если низлежащий диспетчер будет использовать всего один поток для диспетчеризации. Решений тут несколько и все они точно такие же как для обычной многопоточности. От подхода "одна задача — один объект", до использования только локальных переменных в алгоритме, бо "линейность" дотнетных async/await позволяет это делать, т.е. автоматом будет обеспечено "одна задача — один объект".

I>Вот это интересно, а твои виляния со стороны в сторону никому не интересны.


Да не интересно это ни разу, бо разделяемые ресурсы могут быть всё-равно, хотя бы из-за 3-rd party libs. Я собирался показать профит от кооперативной многозадачности вокруг разделяемых ресурсов. А то, что ты от меня спрашиваешь, попахивает антипаттерном для многопоточности.
Re[36]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 16:05
Оценка:
Здравствуйте, Ikemefula, Вы писали:


V>>Ctrl+Insert при открытом MessageBox, Shift+Insert в форум.

I>Тебя это уже не спасёт

Та лан, ты был банально не в курсе.

I> ты по наличию Trace "задетектил" консольное приложение


Ес-но! Показать как в WinForms открыть консоль и выводить туда Trace? Сдается мне, что ты и это не в курсе... А я подумал было, что ты именно так и сделал.
Извини, извнини...

Re[37]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 16:10
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>Ты лучше покажи как забороть "коллизии" когда виндовый поток ровно один и пускает кучу асинхронных цепочек,


V>Дык, он и ДОЛЖЕН так делать. Своими случайными задержками ты затем меняешь асинхронные нити местами. Тут тоже всё ОК, я ХЗ что тебе не так.


Понятно, что должен. ТОлько если ты с базой или с файлом такое проделаешь, получишь непойми что.

V>Ответ — каждый асинхронный вызов не должен делить контекст с другими асинхронными вызовами.


ля-ля-ля. Представь себе, что read-write, это асинхронное АПИ БД или файловой системы.

V>Да не интересно это ни разу, бо разделяемые ресурсы могут быть всё-равно, хотя бы из-за 3-rd party libs. Я собирался показать профит от кооперативной многозадачности вокруг разделяемых ресурсов. А то, что ты от меня спрашиваешь, попахивает антипаттерном для многопоточности.


Понятно, значит асинхронного АПИ ты пока что не видел.
Re[37]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.10.13 16:12
Оценка:
Здравствуйте, vdimas, Вы писали:

V>>>Ctrl+Insert при открытом MessageBox, Shift+Insert в форум.

I>>Тебя это уже не спасёт

V>Та лан, ты был банально не в курсе.


Не в курсе чего ? Что ты Trace за консольное приложение примешь ? Конечно не в курсе, я то думал, ты еще программируешь.

I>> ты по наличию Trace "задетектил" консольное приложение


V>Ес-но! Показать как в WinForms открыть консоль и выводить туда Trace? Сдается мне, что ты и это не в курсе... А я подумал было, что ты именно так и сделал.

V>Извини, извнини...

Ну да, у меня нет привычки притягивать к вопросу все смежные и вообще отвязные проблемы.
Re[29]: Edward C++Hands
От: Ночной Смотрящий Россия  
Дата: 22.10.13 19:28
Оценка:
Здравствуйте, vdimas, Вы писали:

НС>>Он не тупо портированный, это МСовский компилятор J++ в девичестве и был, без всякого портирования.

V>Тем более, что можно ждать от разработки 96-го года?

Напоминаю, компиляторы С++ еще старше.

НС>>Наконец, C# 1 и C# 5 это очень очень большая разница.

V>Но и начинать не с 0-ля надо было.

Почему? Как раз таки с 0.

НС>>Работающий прототип, АФАИК, был написан Эриком за полгода чуть ли не в одиночку.

V>Боюсь, прототип не показывал нужную скорость работы, которую мы обсуждаем.

Бойся. А если отвлечься от твоих фобий, то тот компайлер как бы не быстрее текущего был. Те вещи, которые помогли ему стать быстрее, закладывались с самого начала.

V>В общем, 5 лет на разработку компилятора — это действительно много


Как об стенку горох. Розлин это намного больше чем просто компилятор.

V>, как ни крути. Я знаю, что речь не столько о компиляторе, сколько о платформе для компиляторов...


А заодно о IDE. Но это ведь мелочь, настоящие перцы современную IDE пишут за пару месяцев.

V> но все-равно... "с их ресурсами!" (С)


Активно в Розлин стали набирать народ всего пару лет назад.
Re[38]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 20:18
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ну да, у меня нет привычки притягивать к вопросу все смежные и вообще отвязные проблемы.


А у меня нет привычки запускать стресс-тесты под отладчиком. Поэтому оставалась только консоль... Ан нет!

Скажем так... общение с тобой периодически вгоняет меня в ступор. Умеешь удивить.
Re[38]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 20:44
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Ты лучше покажи как забороть "коллизии" когда виндовый поток ровно один и пускает кучу асинхронных цепочек,


V>>Дык, он и ДОЛЖЕН так делать. Своими случайными задержками ты затем меняешь асинхронные нити местами. Тут тоже всё ОК, я ХЗ что тебе не так.


I>Понятно, что должен. ТОлько если ты с базой или с файлом такое проделаешь, получишь непойми что.


Ну так не проделывай...

Давай ты обрисуешь саму проблему. Пока что я видел фундаментальное непонимание, как этой асинхронностью пользоваться. Помнишь паттерн асинхронных вызовов еще до async/wait? Как ты решал подобные задачи на нем? Помнишь, там был некий AsyncState? У тебя сей паттерн должен был быть уже на уровне мозжечка, тогда не было бы проблем. Сейчас происходящее эквивалентно тому паттерну с точностью до синтаксического сахарка. И тот же самый AsyncState на месте.

V>>Ответ — каждый асинхронный вызов не должен делить контекст с другими асинхронными вызовами.


I>ля-ля-ля. Представь себе, что read-write, это асинхронное АПИ БД или файловой системы.


Представь, что народ давно этим всем пользуется, еще до async/await. Без проблем.


I>Понятно, значит асинхронного АПИ ты пока что не видел.


Да тут уже понятно, кто, чего и когда видел.

Действительно, с async/await я плотно не работал. Удовлетворил несколько раз своё любопытство и всё. Этот сахарок построен на паттерне IAsyncResult, который идет еще с первого дотнета, давно на уровне мозжечка... и чьи ноги растут еще с паттерна виндов под названием Completion Routines. Т.е. там и спинной мозг скорее уже в деле, головой думать не надо, всё и так ясно... ))

Более того, сам объект Task очень похож на то, что мы писали уже не раз с разной степенью универсальности. Т.е. происходящее в коде тривиально — запускать необязательно. А ты тут вторую неделю откровенно плаваешь даже с запусками. Отсюда вывод (в который раз один и тот же!) — мало уметь пользоваться синтаксическим сахарком. Надо ясно представлять себе что происходит под ним. Желательно представлять до самого дна... Хотя бы чтобы не рассуждать на весь и-нет о "гонках изкаробки".

Легко и непринужденно можно без гонок. Не хочешь на досуге накатать простенький диспетчер для Task? Оч рекомендую. ))
Мне потом будет легче с тобой разговаривать.
Re[17]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 20:55
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Вобщем какая то мелочовочка, а совет использовать Refresh вместо Invalidate — для плюсовика это практически криминал


Какой нафик Invalidate???
Речь об обновлении св-в в дизайнере.

И да, в обычной прорисовке тоже часто пользуются Refresh, например для hover-эффектов или сопровождающих рисунков для drug&drop. В общем, оба раза мимо.
Re[36]: Разбор полётов. Part 1.
От: vdimas Россия  
Дата: 22.10.13 21:40
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>Скользкий ты... Десятый раз уже убежал...

I>Нет кода — нечего обсуждать.

Ну так дай свой код.

V>>Не приведя тут низлежащего кода под твоим скриптом или хотя бы словесного пошагового объяснения способа подсчета ссылок в своём примере, ты не даешь мне оснований ни для обсуждения твоего решения, ни для предложений альтернативного способа. Какое бы удачное решения я бы не привел, ты всегда можешь воскликнуть: "А я именно так и предполагал!". Кароч, так спорить не интересно.


I>Я показал АПИ и дал все нужные объяснения.


Я задавал конкретный список вопросов — в ответ полный ноль объяснений.
Своё "АПИ" можешь запихать себе куда подальше, тут достаточно было упоминания вида обертки. Договорились об управляемой среде. Дальше-то чего ты морозишься? Мне тебя долго пинать надо, пока ты разродишься пояснениями, откуда ты берешь эти свои бесконечные счетчики ссылок???


I>Людям "в теме" все ясно.


Люди в теме согласны с моим выводом, что на твоей умозрительной схеме наблюдается зацикленность на счетчиках ссылок.


I>Очевидно — ты не в теме, но пытаешься по привычки рассказать, что лучше всех все знаешь.


Ну так развей наши сомненья!!! Покажи или расскажи, где, в какой момент твои счетчики щелкают.


I>Вот тебе еще один шанс


Спасибо поржал.

I>
I>a.b1 = CreateB()
I>a.b2 = a.b
I>a.b3 = a.b
I>...
I>a.b4 = a.b
I>


I>Теперь фокус — зануляем все ссылки a.b* и нативный объект должен быть разрушен автоматически.

I>От тебя требуется показать, как это делается без счетчика ссылок.

Я тут это... Кароч, тут в редакторе постов видно [c#]некий код[/c#]
Т.е. речь о нейтивной обертки для управляемой среды, пральна?

I>Как это делать со счетчиком ссылок рассказывать не надо, и код просить тоже не надо, это и ежу понятно, что работает.


Нахрена тут счетчик ссылок вообще?

Не, не так.
НАХРЕНА???

Во.

================
Говорила же тебе мама — не прогуливай финализаторы в школе... Эх, ты...
Re[36]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 22:02
Оценка:
Здравствуйте, Ikemefula, Вы писали:


V>>Это я даже обсуждать не намерен. Тебе дотнетная "линейная" асинхронщина дана как противопоставление событийному ООП-программированию. Кароч, тебе не надо хранить данные м/у вызовами "где-то", например, в полях класса, храни их в локальных переменных.


I>Шо, и базу со всеми таблицами и файл со всем контентом — все это в локальную переменную ? А ты, непростой !


А в чем проблема? Вы тут выступали за фукциональщину, то бишь за функциональную декомпозицию. Вам даже async/await для этого подогнали, чтобы объекты-автоматы не пилить вручную. Теперь же всё легко. Блесните воображением, как грится.


V>>И да. Читая твой код мне ни разу в голову не пришло, что 10000 будет правильный ответ. Я ХЗ что надо вообразить о своей программе, чтобы дать такое предположение.

I>Это про твои умения чтения кода, задача то избитая донельзя.

Это у новичков разве что. Там такая же дотнетная асинхронность как была в первом дотнете. НИЧЕГО не поменялось. Кто раньше её не умел, тот и сейчас не сумеет.
Кароч, дальше локальных переменных и явно передаваемых контекстов не ходи и будет тебе счастье.

На досуге еще можещь почитать, для примера, асинхронный ввод/вывод на старых XxxBegin/XxxEnd, обрати внимание на AsyncState...
Не, я понимаю, что это уже почти "expert level"... Ну уж извини, асинхронщина она всегда такая.

I>>>Ты плохо понимаешь вопрос — от тебя требовалось пофиксить асинхронную часть, что бы выдать результат _resource == 10000


V>>Это ты формулируешь задачи. Как всегда — ближе к развязке. Для твоих целей объяви её локальной переменной.

I>И всю базу данных поместить в эту локальную переменную ?

База сама умеет разные уровни изоляции.

Для остального — там, где нужна упорядоченность, дели алгоритмы на асинхронные и синхронные участки. Простой пример — параллельные вычисления. В конце обычно некий синхронный код, ожидающий конца вычислений кусочков и собирающий кусочки в целое. Это т.н. мастер-процесс. Сам этот мастер-процесс может точно так же быть фоновой задачкой, по отношению к основному потоку исполнения.

Кароч, про избитость задачи мне не втирай. Давай лучше конкретную боевую, оно разруливается на раз.
Re[26]: Edward C++Hands
От: vdimas Россия  
Дата: 22.10.13 22:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Тогда получится что актуальность PreAndPostDecorator вытекает из актуальности PreAndPostDecorator


Описка. Там был PreAndPostDecorator и PreAndPostDoerDecorator.

Ты там как обычно. Боевую задачу формулировать отказался. А при попытке упростить выплеснул с водой ребенка.
Re[39]: Edward C++Hands
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.10.13 10:08
Оценка: :)
Здравствуйте, vdimas, Вы писали:

I>>Понятно, что должен. ТОлько если ты с базой или с файлом такое проделаешь, получишь непойми что.


V>Ну так не проделывай...


Сказать кастомеру что либы где асинхронное АПИ надо выбросить а проект закрыть ?

V>Давай ты обрисуешь саму проблему.


Уже все обрисовано, тривиальная проблема. Решается, как и раньше, асинхронным мутексом.

I>>ля-ля-ля. Представь себе, что read-write, это асинхронное АПИ БД или файловой системы.


V>Представь, что народ давно этим всем пользуется, еще до async/await. Без проблем.


Ну вот и покажи решение.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.