Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 16:28

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 18:45 
Не в сети
Аватара пользователя

Зарегистрирован: Пт окт 15, 2010 14:29
Сообщения: 124
Благодарил (а): 68 раз.
Поблагодарили: 1 раз.
Прошу прощения, возможно я плохо искал по форуму ... Но не увидел темы о реализации многозадачности (вернее многопоточности) в Форте. Расскажите пожалуйста, что слышно в нынешних реализациях Форта по данному вопросу.

К примеру, в языке Ада (я с ним не знаком, ознакомился чисто концептуально) есть встроенные возможности реализации многозадачности, как наиболее примечательное - рандеву.

А в Форте с этим как?

_________________
Мои программные ништякиhttps://majestio.info


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 19:07 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Majestic писал(а):
А в Форте с этим как?

Форт чуть ли не изначально был многозадачным, однако при этом использовалась корпоративная многозадачность, т.е. RoundRobin так называемый. Под виндой по сути почти тот же корпоратив, т.к. наследуется виндошная многозадачность (с общей памятью). Что же до реальной многозадачности, посмотрите описание SEA40.
Собственно, ничто не мешает сделать свой вариант, или использовать нравящийся, если операционная система, под которой работает Форт это позволяет (однако, обычно это не так 8) )

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur



За это сообщение автора mOleg поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 19:21 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс



За это сообщение автора Alex поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 19:37 
Не в сети
Аватара пользователя

Зарегистрирован: Пт окт 15, 2010 14:29
Сообщения: 124
Благодарил (а): 68 раз.
Поблагодарили: 1 раз.
mOleg писал(а):
Majestic писал(а):
А в Форте с этим как?

Форт чуть ли не изначально был многозадачным, однако при этом использовалась корпоративная многозадачность, т.е. RoundRobin так называемый. Под виндой по сути почти тот же корпоратив, т.к. наследуется виндошная многозадачность (с общей памятью). Что же до реальной многозадачности, посмотрите описание SEA40.
Собственно, ничто не мешает сделать свой вариант, или использовать нравящийся, если операционная система, под которой работает Форт это позволяет (однако, обычно это не так 8) )

mOleg, если можно, в двух словах ... по последнему стандарту языка каким образом это реализуется, каков механизм, каков синтаксис конструкций?

_________________
Мои программные ништякиhttps://majestio.info


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 20:03 
Не в сети
Аватара пользователя

Зарегистрирован: Пт окт 15, 2010 14:29
Сообщения: 124
Благодарил (а): 68 раз.
Поблагодарили: 1 раз.
Alex писал(а):
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс


Спасибо, уже читаю! :)

_________________
Мои программные ништякиhttps://majestio.info


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 20:04 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg несколько неправильно понимает "виндошную многозадачность", путая ее с многопоточностью. Есть понятия task и thread, они в явном виде описаны в материалах от Microsoft. В Windows нет обобщения памяти между задачами. Реализации Форта, описанные в литературе 80-90 годов, использовали многопоточность, реализованную на уровне интерпретатора шитого кода. Подпрограммы, написанные в машинных кодах, исполняли слова Форта, заданные индексами/адресами/и т.п. по очереди, по одному из каждого потока исполнения. Это было возможным, поскольку в шитом коде каждое слово заканчивается командой NEXT, которая при исполнении передает управление следующему слову. Для машинного кода это обычный ret, а вот в шитом коде появляется возможность переписать NEXT таким образом, чтобы происходил не просто переход к следующему слову, а к очередному слову следующего потока. Почитать подробнее можно тоже у Баранова.
Форт сам по себе не дает какой-то сверхгибкости или сверхнадежности для многопоточных приложений. Другое дело, что его синтаксис (а скорее даже стиль) настолько слабо ограничен чем-либо, что просто не может помешать реализации какой-то идеи взаимодействия задач/потоков. Была бы идея.



За это сообщение автора Hishnik поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 20:11 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Majestic писал(а):
mOleg, если можно, в двух словах ... по последнему стандарту языка каким образом это реализуется, каков механизм, каков синтаксис конструкций?

В стандарте я не помню, чтобы что-то говорилось о многопоточности(многозадачности), собственно сами можете туда заглянуть, ссылки на него есть в разделе литературы.
В большинстве систем используется набор START STOP TASK: которые являются "обертками" системных вызовов. Однако, на мой взгляд это не самый удобный вариант, и не самый лучший (но на безрыбье..) Лично мне больше нравится линуксевый fork , чего под винду, похоже, сделать очень не просто, если вообще возможно.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur



За это сообщение автора mOleg поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 20:25 
Не в сети
Аватара пользователя

Зарегистрирован: Пт окт 15, 2010 14:29
Сообщения: 124
Благодарил (а): 68 раз.
Поблагодарили: 1 раз.
Alex писал(а):
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс

Cразу вопрос: в доке описано слово TASK... Похоже, это нестандартное слово?
В стандарте ANS'94 я такого не нашел :(
Хищник писал(а):
Для машинного кода это обычный ret, а вот в шитом коде появляется возможность переписать NEXT таким образом, чтобы происходил не просто переход к следующему слову, а к очередному слову следующего потока. Почитать подробнее можно тоже у Баранова.
Форт сам по себе не дает какой-то сверхгибкости или сверхнадежности для многопоточных приложений. Другое дело, что его синтаксис (а скорее даже стиль) настолько слабо ограничен чем-либо, что просто не может помешать реализации какой-то идеи взаимодействия задач/потоков. Была бы идея.


Многопоточность (равно как и многозадачность) не может приносить пользу без синхронизации. В различных операционных системах это решается с помощью определенных механзмов (в Windoze, к примеру, это семафоры, мьютексы и крит.секции).

По поводу идеи. Есть такая, сейчас загляну в Гугл и найду давно интересовавший меня материал... Вот он. Пару лет назад я это чудо перевел на С++ и оно заработало :) Однако ... Это суррогат идей языка Ada. Вот интересно, как на ваш взгляд, возможно ли такое реализовать на Форте более изящно?

_________________
Мои программные ништякиhttps://majestio.info


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 20:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Majestic писал(а):
По поводу идеи. Есть такая, сейчас загляну в Гугл и найду давно интересовавший меня материал... Вот он. Пару лет назад я это чудо перевел на С++ и оно заработало Однако ... Это суррогат идей языка Ada. Вот интересно, как на ваш взгляд, возможно ли такое реализовать на Форте более изящно?

Еще лет 10 назад я рассматривал возможность клиент-серверной модели с монопольным доступом к ресурсам. Модель была привлекательна тем, что позволяла работать как на PC, так и в многопроцессорных системах, где монопольный доступ к чему-либо может существовать by construction. Смысл состоит в том, что отдельные форт-машины (аппаратные или программные) обмениваются обычными строками на Форте, помещая их во входной буфер друг друга. При этом получить доступ к ресурсу соседа невозможно, можно только поместить в его входной буфер запрос (например, "прочитай данные из файла и отправь их мне в массив X[]"). Получившая запрос машина немедленно обрабатывает его, возвращая результат в виде аналогичного сообщения ("запиши данные в массив X[]"). Какое именно сообщение - "подсказывает" источник запроса. При необходимости клиент может сначала доопределить на сервере нужные ему слова, и только потом выдать запрос. Таким образом, никакой структуры сообщений по сути нет, отдельные процессы обмениваются непосредственно текстом на Форте.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 21:03 
Не в сети
Аватара пользователя

Зарегистрирован: Пт окт 15, 2010 14:29
Сообщения: 124
Благодарил (а): 68 раз.
Поблагодарили: 1 раз.
Дело в том, что просто программным переключением потоков, я думаю не сильно получится обойтись. Потоки весьма завязаны на ОС. К примеру, ОС сама зачастую планирует на каком процессоре (ядре) выполнять поток, какой приоритет ему дать и пр.

В плане Форта всплывает еще одно обстоятельство - как оформлять на Форте коллбэк-функции, ведь зачастую без них никак. В плане той же FreeBSD, есть специальный набор функций для работы с потоками. Вобщем пока вопросов больше :?

_________________
Мои программные ништякиhttps://majestio.info


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Чт окт 21, 2010 21:22 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Majestic писал(а):
Дело в том, что просто программным переключением потоков, я думаю не сильно получится обойтись. Потоки весьма завязаны на ОС. К примеру, ОС сама зачастую планирует на каком процессоре (ядре) выполнять поток, какой приоритет ему дать и пр.

Идее потому и ~10 лет, что мне так и не понадобилась реализация параллельных программ, отличная от того, что предоставляет Windows. Софт-процессоры - другое дело, но там и потоки выполнения разделены на этапе проектирования системы, и каждое ядро делает строго то, что ему назначено. Правда, я не работаю с сетевыми проектами, где ситуация, конечно, отличается от расчетных или моделирующих приложений.
Потом, я не говорю об управлении потоками в "машинном" понимании. Переключение форт-приложений выполняется как обычно, средствами ОС. Или же речь идет об одном приложении, представляющем собой программную машину, эмулирующая несколько потоков выполнения. Конечно, это медленно, и параллельность обеспечивается только на уровне форт-потоков.



За это сообщение автора Hishnik поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Threads в Форте?
СообщениеДобавлено: Пт окт 22, 2010 03:55 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Majestic писал(а):
В плане Форта всплывает еще одно обстоятельство - как оформлять на Форте коллбэк-функции, ведь зачастую без них никак.

делается оно нормально. По крайней мере под винду в том же СПФе есть такая возможность. Я делал свой вариант (но тоже под win).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur



За это сообщение автора mOleg поблагодарил: Majestio
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB