OberonCore https://forum.oberoncore.ru/ |
|
Coroutines вместо потоков https://forum.oberoncore.ru/viewtopic.php?f=31&t=5219 |
Страница 2 из 3 |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 08:48 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Иван Денисов писал(а): Цитата: BB Linux - ucontext_t Это где-то выложено? на sourceforge http://sourceforge.net/projects/ta1/files/co2.0/ |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 08:58 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Иван Денисов писал(а): Йозеф не разрабатывает пакет, а интегрирует часть ваших наработок в главный дистрибутив. Не пойму, сознательно ли вы вносите путаницу? Были предложения Josef Templ, которые приемлемы и могут быть добавлены в пакет Co_ Цитата: The list could look like this: TYPE MarkRegion* = POINTER TO ABSTRACT RECORD prev, next: MarkRegion END; PROCEDURE (this: MarkRegion) BeginAdr*(): INTEGER, ABSTRACT PROCEDURE (this: MarkRegion) EndAdr*(): INTEGER, ABSTRACT; VAR markRegions: MarkRegion; PROCEDURE AddMarkRegion*(r: MarkRegion) PROCEDURE RemoveMarkRegion*(r: MarkRegion) - Josef Я эти функции поддержки стека реализовал для BB1.6, а потом увидел другую версию, полностью отвергающую мою реализацию. Все в стиле Microsoft. Иван Андреевич, Я Вас просил выложить ссылку, вы этого не сделали, спасибо за потраченное Вами время. Более эту проблему обсуждать не вижу смысла. |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 09:15 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Викторович, при всем уважении, я не понимаю Вас на русском. Как Вы хотите, чтобы ваш посыл поняли через переводчик? Сначала хочу понять сам, что Вы хотите сказать, чтобы как-то прокомментировать ссылку. |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 09:19 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре? |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 09:21 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Дагаев писал(а): Были предложения Josef Templ, которые приемлемы и могут быть добавлены в пакет Co_ Я эти функции поддержки стека реализовал для BB1.6, а потом увидел другую версию, полностью отвергающую мою реализацию. Все в стиле Microsoft. Мы не обсуждаем, что добавить в пакет Co_. Обсуждается как добавить основы работы с сопрограммами в базовый дистрибутив BlackBox. |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 09:49 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Иван Денисов писал(а): Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре? При WinApi.SwitchToFiber идет переход к сопрограмме. Это - переключение контекста. Как минимум, старые регистры: счетчик команд и указатель стека сохраняются. И восстанавливаются новые. При переходе с потока на поток тоже происходит переключение контекста. Но контекст у потока больше. А у процесса - еще больше. |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 10:22 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Правильно понимаю, что основной смысл комментария в том, чтобы не пытаться ничего упростить и интегрировать, а использовать Вашу подсистему Co_ в том виде как она есть? |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 10:41 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Это не комментарий - я провожу свою независимую линию. Еще раз: 1.Нужно указать, что Coroutines уже добавлена в 2014, но без поддержки от Kernel. 2.Нужно сделать поддержку Kernel, доступную для всех пакетов. Equal opportunities. |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 11:24 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Дагаев писал(а): 1.Нужно указать, что Coroutines уже добавлена в 2014, но без поддержки от Kernel. 2.Нужно сделать поддержку Kernel, доступную для всех пакетов. Equal opportunities. Это уже понятнее. Так гугл даже смог перевести на английский. https://forum.blackboxframework.org/vie ... 5809#p5809 Прошу вас оценить насколько доступно сейчас в ядре реализована поддержка сопрограмм: http://blackboxframework.org/unstable/i ... a1.829.zip Kernel.Coroutine |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 11:31 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Дагаев писал(а): в Kernel не должно быть зашито вызовов Windows Fiber только для модуля J Templ: Kernel.InitCoroutines, Kernel.AddCoroutine, Kernel.SetCoroutineBase, Kernel.RemoveCoroutine, Kernel.TransferCoroutine
|
Автор: | Иван Денисов [ Среда, 29 Март, 2017 12:00 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Поглядите, пожалуйста, первую реализацию http://blackboxframework.org/unstable/i ... a1.816.zip там нет вызовов WInApi в ядре. Такой вариант будет полезен в равной степени? |
Автор: | Илья Ермаков [ Среда, 29 Март, 2017 19:54 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Иван Денисов писал(а): Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре? Так это логический параллелизм. Ваша программная логика выполняется псевдо-параллельно. |
Автор: | Иван Денисов [ Среда, 29 Март, 2017 21:38 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Info21 писал(а): Иван Денисов писал(а): Опции - это тоже сложность. Смотря для кого.Иван Денисов писал(а): многим пока эта идея нравится несмотря на некоторые риски. Меня пугают как раз риски. И так до конца сойти с 1.5 не могу.Иван Денисов писал(а): Это будет контролируемый эксперимент. Кто его будет контролировать?Вы предлагаете просто верить Вам и Центру. Центр сделал много хорошего, но пока не прошёл проверку временем в отношении умения удерживать свой энтуазизм, который сейчас, после первых осторожных успехов, очевидно, вырос. А соблазн лёгкого добавления крутых фич в Оберонах велик. Если разработчики не видят возражений и возражающих, это не значит, что их нет или не появится, когда незамеченные разработчиками в пылу энтузиазма тонкости вдруг выстрелят на длинных временах. Иван Денисов писал(а): По поводу фолдов - ваше субъективное мнение. Есть, между прочим, законы типографской эстетики, выверенные веками.А Вы пытаетесь (независимо от осознанного намерения) таким скрытым образом придать объективности Вашему, такому же субъективному мнению. Меня всё это, признаться, пугает. Бессмысленные эволюции Windows уже разрушили мне тщательно выстроенную личную софтосреду, в которой я работал без сучка и задоринки больше десяти лет. Не хотелось бы повторения с Блэкбоксом. Центру не следует забывать (а они уже забывают), что опросы пользователей, которые проводил Оминк, на первое, с отрывом, место ставили стабильность Блэкбокса. Вот со всем согласен, кроме законов типографской эстетики. Тут они были сознательно нарушены, чтобы складки бросались в глаза. Назовем это художественным приемом. Думаю, что Вы справедливо в праве подождать пока Центр пройдет испытания временем. Никто особо не подгоняет. Ну а Вы, когда задумаетесь про стабильность, вспомните, что версия 1.7 включает исправление 65 багов: http://blackboxframework.org/stable/bla ... anges.html Да, 1 серьезный баг был в стабильном выпуске. Но он был обнаружен и исправлен: http://blackboxframework.org/unstable/m ... anges.html Может быть при более активном участии сообщества в бета-тестировании, такой проблемы удалось бы избежать. |
Автор: | Дмитрий Дагаев [ Среда, 29 Март, 2017 23:30 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Иван Денисов писал(а): Поглядите, пожалуйста, первую реализацию http://blackboxframework.org/unstable/i ... a1.816.zip там нет вызовов WInApi в ядре. Такой вариант будет полезен в равной степени? То, что я вижу - список структур StackInfo для локальных стеков сопрограмм, функции работы с ними InitStacks, AddStackInfo, SetStackBase, RemoveStackInfo, SwitchStackInfo и модификация MarkLocals - меня устраивает. |
Автор: | Иван Денисов [ Четверг, 30 Март, 2017 10:55 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Интересно понять про Transfer и Yeild. По мне так тоже наличие Yeild - это избыточная сложность, если возможно всегда хранить указатель на исходную сопрограмму. Для обсуждения на английском завел тему: https://community.blackboxframework.org ... f=49&t=165 |
Автор: | Дмитрий Дагаев [ Четверг, 30 Март, 2017 13:28 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Я еще сослался на пакет Tasks Ильи Ермакова, без деталей, разумеется, что такой существует, но неопубликован https://community.blackboxframework.org/viewtopic.php?f=49&t=165&p=952#p952. |
Автор: | Иван Денисов [ Четверг, 30 Март, 2017 22:02 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Нашел вашу заметку еще: http://cyberleninka.ru/article/n/ne-tolko-potoki |
Автор: | Иван Денисов [ Пятница, 07 Апрель, 2017 22:32 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Викторович, поясните на русском, пожалуйста. Я никак не могу въехать в чем преимущество сущности планировщика (Task) против обычного действия (Services.Action) ? |
Автор: | Дмитрий Дагаев [ Суббота, 08 Апрель, 2017 07:56 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
За один цикл таймера Actions можно вызвать один цикл вычислений, как в ObxActions, а можно несколько. Планировщик SchedTasks вызывает фоновую задачу снова и снова, пока есть время до следующего цикла. У меня разница в 400000 раз. |
Автор: | Иван Денисов [ Суббота, 08 Апрель, 2017 13:43 ] |
Заголовок сообщения: | Re: Coroutines вместо потоков |
Дмитрий Дагаев писал(а): За один цикл таймера Actions можно вызвать один цикл вычислений, как в ObxActions, а можно несколько. Планировщик SchedTasks вызывает фоновую задачу снова и снова, пока есть время до следующего цикла. У меня разница в 400000 раз. А что тогда происходит во время срабатывания следующего цикла? Возврат в главную сопрограмму? |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |