OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 26 Июнь, 2019 19:43

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 08:48 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Иван Денисов писал(а):
Цитата:
BB Linux - ucontext_t

Это где-то выложено?

на sourceforge http://sourceforge.net/projects/ta1/files/co2.0/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 08:58 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Иван Денисов писал(а):
Йозеф не разрабатывает пакет, а интегрирует часть ваших наработок в главный дистрибутив. Не пойму, сознательно ли вы вносите путаницу?

Были предложения 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.

Иван Андреевич,
Я Вас просил выложить ссылку, вы этого не сделали, спасибо за потраченное Вами время.
Более эту проблему обсуждать не вижу смысла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 09:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Дмитрий Викторович, при всем уважении, я не понимаю Вас на русском. Как Вы хотите, чтобы ваш посыл поняли через переводчик? Сначала хочу понять сам, что Вы хотите сказать, чтобы как-то прокомментировать ссылку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 09:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 09:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Дмитрий Дагаев писал(а):
Были предложения Josef Templ, которые приемлемы и могут быть добавлены в пакет Co_

Я эти функции поддержки стека реализовал для BB1.6, а потом увидел другую версию, полностью отвергающую мою реализацию. Все в стиле Microsoft.

Мы не обсуждаем, что добавить в пакет Co_. Обсуждается как добавить основы работы с сопрограммами в базовый дистрибутив BlackBox.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 09:49 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Иван Денисов писал(а):
Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре?

При WinApi.SwitchToFiber идет переход к сопрограмме. Это - переключение контекста. Как минимум, старые регистры: счетчик команд и указатель стека сохраняются. И восстанавливаются новые. При переходе с потока на поток тоже происходит переключение контекста. Но контекст у потока больше. А у процесса - еще больше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 10:22 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Правильно понимаю, что основной смысл комментария в том, чтобы не пытаться ничего упростить и интегрировать, а использовать Вашу подсистему Co_ в том виде как она есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 10:41 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Это не комментарий - я провожу свою независимую линию.
Еще раз:
1.Нужно указать, что Coroutines уже добавлена в 2014, но без поддержки от Kernel.
2.Нужно сделать поддержку Kernel, доступную для всех пакетов. Equal opportunities.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 11:24 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Дмитрий Дагаев писал(а):
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 11:31 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Дмитрий Дагаев писал(а):
в Kernel не должно быть зашито вызовов Windows Fiber только для модуля J Templ: Kernel.InitCoroutines, Kernel.AddCoroutine, Kernel.SetCoroutineBase, Kernel.RemoveCoroutine, Kernel.TransferCoroutine


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 12:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Поглядите, пожалуйста, первую реализацию
http://blackboxframework.org/unstable/i ... a1.816.zip
там нет вызовов WInApi в ядре.
Такой вариант будет полезен в равной степени?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 19:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9127
Откуда: Россия, Орёл
Иван Денисов писал(а):
Вернемся к "кооперативной многозадачности". Если реализация на WindowsFibers у вас, то это все равно не "параллельное и многопоточное программирование" ведь. Проясните, пожалуйста. Выполнение ведь в одном потоке на одном процессоре?


Так это логический параллелизм.
Ваша программная логика выполняется псевдо-параллельно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 21:38 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Info21 писал(а):
Иван Денисов писал(а):
Опции - это тоже сложность.
Смотря для кого.

Иван Денисов писал(а):
многим пока эта идея нравится несмотря на некоторые риски.
Меня пугают как раз риски. И так до конца сойти с 1.5 не могу.

Иван Денисов писал(а):
Это будет контролируемый эксперимент.
Кто его будет контролировать?
Вы предлагаете просто верить Вам и Центру.
Центр сделал много хорошего, но пока не прошёл проверку временем в отношении умения удерживать свой энтуазизм, который сейчас, после первых осторожных успехов, очевидно, вырос.
А соблазн лёгкого добавления крутых фич в Оберонах велик.
Если разработчики не видят возражений и возражающих, это не значит, что их нет или не появится, когда незамеченные разработчиками в пылу энтузиазма тонкости вдруг выстрелят на длинных временах.

Иван Денисов писал(а):
По поводу фолдов - ваше субъективное мнение.
Есть, между прочим, законы типографской эстетики, выверенные веками.

А Вы пытаетесь (независимо от осознанного намерения) таким скрытым образом придать объективности Вашему, такому же субъективному мнению.

Меня всё это, признаться, пугает. Бессмысленные эволюции Windows уже разрушили мне тщательно выстроенную личную софтосреду, в которой я работал без сучка и задоринки больше десяти лет. Не хотелось бы повторения с Блэкбоксом.

Центру не следует забывать (а они уже забывают), что опросы пользователей, которые проводил Оминк, на первое, с отрывом, место ставили стабильность Блэкбокса.


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

Думаю, что Вы справедливо в праве подождать пока Центр пройдет испытания временем. Никто особо не подгоняет. Ну а Вы, когда задумаетесь про стабильность, вспомните, что версия 1.7 включает исправление 65 багов: http://blackboxframework.org/stable/bla ... anges.html
Да, 1 серьезный баг был в стабильном выпуске. Но он был обнаружен и исправлен:
http://blackboxframework.org/unstable/m ... anges.html
Может быть при более активном участии сообщества в бета-тестировании, такой проблемы удалось бы избежать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Среда, 29 Март, 2017 23:30 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Иван Денисов писал(а):
Поглядите, пожалуйста, первую реализацию
http://blackboxframework.org/unstable/i ... a1.816.zip
там нет вызовов WInApi в ядре.
Такой вариант будет полезен в равной степени?

То, что я вижу - список структур StackInfo для локальных стеков сопрограмм, функции работы с ними InitStacks, AddStackInfo, SetStackBase, RemoveStackInfo, SwitchStackInfo и модификация MarkLocals - меня устраивает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Четверг, 30 Март, 2017 10:55 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Интересно понять про Transfer и Yeild.

По мне так тоже наличие Yeild - это избыточная сложность, если возможно всегда хранить указатель на исходную сопрограмму.

Для обсуждения на английском завел тему:
https://community.blackboxframework.org ... f=49&t=165


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Четверг, 30 Март, 2017 13:28 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
Я еще сослался на пакет Tasks Ильи Ермакова, без деталей, разумеется, что такой существует, но неопубликован https://community.blackboxframework.org/viewtopic.php?f=49&t=165&p=952#p952.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Четверг, 30 Март, 2017 22:02 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Нашел вашу заметку еще: http://cyberleninka.ru/article/n/ne-tolko-potoki


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Пятница, 07 Апрель, 2017 22:32 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Дмитрий Викторович, поясните на русском, пожалуйста. Я никак не могу въехать в чем преимущество сущности планировщика (Task) против обычного действия (Services.Action) ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Суббота, 08 Апрель, 2017 07:56 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 335
Откуда: Москва
За один цикл таймера Actions можно вызвать один цикл вычислений, как в ObxActions, а можно несколько. Планировщик SchedTasks вызывает фоновую задачу снова и снова, пока есть время до следующего цикла. У меня разница в 400000 раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Coroutines вместо потоков
СообщениеДобавлено: Суббота, 08 Апрель, 2017 13:43 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Дмитрий Дагаев писал(а):
За один цикл таймера Actions можно вызвать один цикл вычислений, как в ObxActions, а можно несколько. Планировщик SchedTasks вызывает фоновую задачу снова и снова, пока есть время до следующего цикла. У меня разница в 400000 раз.

А что тогда происходит во время срабатывания следующего цикла? Возврат в главную сопрограмму?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB