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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Threads в Форте?
Автор Сообщение
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Majestic писал(а):
В плане Форта всплывает еще одно обстоятельство - как оформлять на Форте коллбэк-функции, ведь зачастую без них никак.

делается оно нормально. По крайней мере под винду в том же СПФе есть такая возможность. Я делал свой вариант (но тоже под win).
Сообщение Добавлено: Пт окт 22, 2010 03:55
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Majestic писал(а):
Дело в том, что просто программным переключением потоков, я думаю не сильно получится обойтись. Потоки весьма завязаны на ОС. К примеру, ОС сама зачастую планирует на каком процессоре (ядре) выполнять поток, какой приоритет ему дать и пр.

Идее потому и ~10 лет, что мне так и не понадобилась реализация параллельных программ, отличная от того, что предоставляет Windows. Софт-процессоры - другое дело, но там и потоки выполнения разделены на этапе проектирования системы, и каждое ядро делает строго то, что ему назначено. Правда, я не работаю с сетевыми проектами, где ситуация, конечно, отличается от расчетных или моделирующих приложений.
Потом, я не говорю об управлении потоками в "машинном" понимании. Переключение форт-приложений выполняется как обычно, средствами ОС. Или же речь идет об одном приложении, представляющем собой программную машину, эмулирующая несколько потоков выполнения. Конечно, это медленно, и параллельность обеспечивается только на уровне форт-потоков.
Сообщение Добавлено: Чт окт 21, 2010 21:22
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Дело в том, что просто программным переключением потоков, я думаю не сильно получится обойтись. Потоки весьма завязаны на ОС. К примеру, ОС сама зачастую планирует на каком процессоре (ядре) выполнять поток, какой приоритет ему дать и пр.

В плане Форта всплывает еще одно обстоятельство - как оформлять на Форте коллбэк-функции, ведь зачастую без них никак. В плане той же FreeBSD, есть специальный набор функций для работы с потоками. Вобщем пока вопросов больше :?
Сообщение Добавлено: Чт окт 21, 2010 21:03
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Majestic писал(а):
По поводу идеи. Есть такая, сейчас загляну в Гугл и найду давно интересовавший меня материал... Вот он. Пару лет назад я это чудо перевел на С++ и оно заработало Однако ... Это суррогат идей языка Ada. Вот интересно, как на ваш взгляд, возможно ли такое реализовать на Форте более изящно?

Еще лет 10 назад я рассматривал возможность клиент-серверной модели с монопольным доступом к ресурсам. Модель была привлекательна тем, что позволяла работать как на PC, так и в многопроцессорных системах, где монопольный доступ к чему-либо может существовать by construction. Смысл состоит в том, что отдельные форт-машины (аппаратные или программные) обмениваются обычными строками на Форте, помещая их во входной буфер друг друга. При этом получить доступ к ресурсу соседа невозможно, можно только поместить в его входной буфер запрос (например, "прочитай данные из файла и отправь их мне в массив X[]"). Получившая запрос машина немедленно обрабатывает его, возвращая результат в виде аналогичного сообщения ("запиши данные в массив X[]"). Какое именно сообщение - "подсказывает" источник запроса. При необходимости клиент может сначала доопределить на сервере нужные ему слова, и только потом выдать запрос. Таким образом, никакой структуры сообщений по сути нет, отдельные процессы обмениваются непосредственно текстом на Форте.
Сообщение Добавлено: Чт окт 21, 2010 20:46
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Alex писал(а):
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс

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


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

По поводу идеи. Есть такая, сейчас загляну в Гугл и найду давно интересовавший меня материал... Вот он. Пару лет назад я это чудо перевел на С++ и оно заработало :) Однако ... Это суррогат идей языка Ada. Вот интересно, как на ваш взгляд, возможно ли такое реализовать на Форте более изящно?
Сообщение Добавлено: Чт окт 21, 2010 20:25
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Majestic писал(а):
mOleg, если можно, в двух словах ... по последнему стандарту языка каким образом это реализуется, каков механизм, каков синтаксис конструкций?

В стандарте я не помню, чтобы что-то говорилось о многопоточности(многозадачности), собственно сами можете туда заглянуть, ссылки на него есть в разделе литературы.
В большинстве систем используется набор START STOP TASK: которые являются "обертками" системных вызовов. Однако, на мой взгляд это не самый удобный вариант, и не самый лучший (но на безрыбье..) Лично мне больше нравится линуксевый fork , чего под винду, похоже, сделать очень не просто, если вообще возможно.
Сообщение Добавлено: Чт окт 21, 2010 20:11
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
mOleg несколько неправильно понимает "виндошную многозадачность", путая ее с многопоточностью. Есть понятия task и thread, они в явном виде описаны в материалах от Microsoft. В Windows нет обобщения памяти между задачами. Реализации Форта, описанные в литературе 80-90 годов, использовали многопоточность, реализованную на уровне интерпретатора шитого кода. Подпрограммы, написанные в машинных кодах, исполняли слова Форта, заданные индексами/адресами/и т.п. по очереди, по одному из каждого потока исполнения. Это было возможным, поскольку в шитом коде каждое слово заканчивается командой NEXT, которая при исполнении передает управление следующему слову. Для машинного кода это обычный ret, а вот в шитом коде появляется возможность переписать NEXT таким образом, чтобы происходил не просто переход к следующему слову, а к очередному слову следующего потока. Почитать подробнее можно тоже у Баранова.
Форт сам по себе не дает какой-то сверхгибкости или сверхнадежности для многопоточных приложений. Другое дело, что его синтаксис (а скорее даже стиль) настолько слабо ограничен чем-либо, что просто не может помешать реализации какой-то идеи взаимодействия задач/потоков. Была бы идея.
Сообщение Добавлено: Чт окт 21, 2010 20:04
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Alex писал(а):
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс


Спасибо, уже читаю! :)
Сообщение Добавлено: Чт окт 21, 2010 20:03
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
mOleg писал(а):
Majestic писал(а):
А в Форте с этим как?

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

mOleg, если можно, в двух словах ... по последнему стандарту языка каким образом это реализуется, каков механизм, каков синтаксис конструкций?
Сообщение Добавлено: Чт окт 21, 2010 19:37
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Добрый вечер!
Советую вам почитать здесь и здесь.
а также в папках devel есть примерчик простейшего многопотокового веб-сервера
\SP-Forth\devel\~nn\lib\web это все из спф и под виндовс
Сообщение Добавлено: Чт окт 21, 2010 19:21
  Заголовок сообщения:  Re: Threads в Форте?  Ответить с цитатой
Majestic писал(а):
А в Форте с этим как?

Форт чуть ли не изначально был многозадачным, однако при этом использовалась корпоративная многозадачность, т.е. RoundRobin так называемый. Под виндой по сути почти тот же корпоратив, т.к. наследуется виндошная многозадачность (с общей памятью). Что же до реальной многозадачности, посмотрите описание SEA40.
Собственно, ничто не мешает сделать свой вариант, или использовать нравящийся, если операционная система, под которой работает Форт это позволяет (однако, обычно это не так 8) )
Сообщение Добавлено: Чт окт 21, 2010 19:07
  Заголовок сообщения:  Threads в Форте?  Ответить с цитатой
Прошу прощения, возможно я плохо искал по форуму ... Но не увидел темы о реализации многозадачности (вернее многопоточности) в Форте. Расскажите пожалуйста, что слышно в нынешних реализациях Форта по данному вопросу.

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

А в Форте с этим как?
Сообщение Добавлено: Чт окт 21, 2010 18:45

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


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