Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Два параллельных процесса в pascal

Автор: Unconnected 27.06.2008 15:51

Возможно ли организовать два параддедбно идущих действия в программе на pascal?

Автор: Unconnected 27.06.2008 15:54

Цитата(Unconnected @ 27.06.2008 11:51) *

параддедбно

Извиняюсь, параллельно. cool.gif

Автор: andriano 27.07.2008 0:42

Возможно.

(Собственно, аскаль здесь ни при чем - это можно сделать на любом унверсальном языке. Но решение зависит от ОС.)

Автор: Unconnected 30.07.2008 1:51

Я так понял,что при реализации будет использоваться ассемблер?
А при чём сдесь ОС?

Автор: Ozzя 30.07.2008 20:12

http://pascal.sources.ru/multtask/index.htm

Автор: andriano 31.07.2008 21:48

Цитата(Unconnected @ 29.07.2008 22:51) *

Я так понял,что при реализации будет использоваться ассемблер?
А при чём сдесь ОС?

Зачем Ассемблер? Практически все, что может когда-либо и кому-либо потребоваться, можно написать на любом языке высокогу уровня. Хотя бы на том же Паскале.
А ОС при том, что все ОС можно разделить на три группы:
1. Не поддерживающие ни многозадачность, ни параллельные вычисления. Пример - DOS.
2. Поддерживающие многозадачность, но не поддерживающие параллельные вычисления. Пример - Windows 3.x, Windows 9x.
3. Поддерживающие как многопоточность, так и параллельные вычисления. Пример: Windows NT, Unix.
Если ОС не поддерживает ничего, то все, что можно сделать, это ручками организовать поочередное выполнение разных задач на одном процессорном ядре. (приведенная выше ссылка демонстрирует как раз этот подход)
Во втором случае то же самое можно сделать гораздо проще - с использованием средств ОС.
В третьем случае можно средствами ОС организовать реально параллельные вычисления, т.е. разные задачи будут выполнять различными ядрами многоядерного процессора или различными процессорами многопроцессорной системы. Код при этом будет почти или в точности таким же, как и в случае 2.

Автор: Unconnected 22.08.2008 1:00

Программа,в которой я собираюсь реализовывать параллельные процессы,будет работать только на XP.) Можно привести любой простейший на Паскале? Просто меня интересует именно программная реализация.

Автор: volvo 22.08.2008 16:07

Паскали - они разные бывают. Если тебе все еще хочется изобретать велосипеды - то ходи по ссылке, которую дал Оззя, там есть примеры. Если все-таки использовать более современное ПО - то см. сюда: http://forum.pascal.net.ru/index.php?s=&showtopic=3968&view=findpost&p=34860

Автор: Unconnected 22.08.2008 20:19

В данный момент я пишу на паскале,пооэтому придётся ходить по ссылке и разбирться в английских комментариях smile.gif blink.gif

Автор: volvo 22.08.2008 20:34

Опять 25... Тебя русским языком спрашиваю, на КАКОМ Паскале ты пишешь? На Турбо что-ли?

Автор: Unconnected 23.08.2008 0:22

Volvo, в твоём предпоследнем сообщении нет ни одного вопросительного знака no1.gif Да, на TP7.

Автор: andriano 23.08.2008 1:58

Unconnected, TP7 не умеет генерировать код для WinXP. С чем, собственно, связаны как вопросы volvo, так и мои.
Для TP7 справедлив только п.1. в моем почсте №6, а для BP7 - 1 и 2.

Автор: Unconnected 24.08.2008 17:44

То есть,запуская паскальную программу в XP,она открывается в DOSовском окне,правильно? smile.gif

Автор: andriano 24.08.2008 19:11

Не совсем.
Любой компилятор может сделать ехе-шник только для конкретной ОС. Дркгое дело, что программы, сделанные для DOS в большинстве своем можно запустить в DOS-сессии Windows.
Но DOS многопоточность не поддерживает, следовательно, программа для него неспособна одновременно выполнять разные действия, только поочередно.

Автор: Unconnected 24.08.2008 20:06

Ясно.Получается,что ссылка,которую запостил Ozzя , актуальна только для Borland Pascal и для Windows 3.x, Windows 9x?

Автор: xds 25.08.2008 1:22

Unconnected, что конкретно надо реализовать?

Автор: andriano 25.08.2008 1:50

Цитата(Unconnected @ 24.08.2008 17:06) *

Ясно.Получается,что ссылка,которую запостил Ozzя , актуальна только для Borland Pascal и для Windows 3.x, Windows 9x?

Ссылка касается псевдопараллельных действий. И ничего другого в DOS, Win3x,Win9x быть не может.
Опиши подробнее, что именно тебе нужно, тогда можно будет дать какой-либо конкретный совет (общетеоретические ответы ты, похоже, не воспринимаешь).

Автор: Unconnected 25.08.2008 1:59

Ну,например,выполняется в цикле вывод на экран чисел от одного до ста,и при этом с воспроизводится wav-файл.

Автор: andriano 25.08.2008 11:15

Цитата(Unconnected @ 24.08.2008 22:59) *

Ну,например,выполняется в цикле вывод на экран чисел от одного до ста,и при этом с воспроизводится wav-файл.

Естественно, можно.
Воспроизведение wav-файла настраивается на аппаратное прерывание от звуковой карты, а передача данных в нее поручается контроллеру прямого доступа к памяти, и в нужные моменты вычисления прерываются, готовится буфер из новой порции звуковых данных, после чего управление возвращается "арифметической" части.
Собственно, так были организованы все игры под DOS.

Автор: Unconnected 25.08.2008 15:55

Спасибо за обьяснение,буду пробовать smile.gif good.gif