Помощь - Поиск - Пользователи - Календарь
Полная версия: Два параллельных процесса в pascal
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Unconnected
Возможно ли организовать два параддедбно идущих действия в программе на pascal?
Unconnected
Цитата(Unconnected @ 27.06.2008 11:51) *

параддедбно

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

(Собственно, аскаль здесь ни при чем - это можно сделать на любом унверсальном языке. Но решение зависит от ОС.)
Unconnected
Я так понял,что при реализации будет использоваться ассемблер?
А при чём сдесь ОС?
andriano
Цитата(Unconnected @ 29.07.2008 22:51) *

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

Зачем Ассемблер? Практически все, что может когда-либо и кому-либо потребоваться, можно написать на любом языке высокогу уровня. Хотя бы на том же Паскале.
А ОС при том, что все ОС можно разделить на три группы:
1. Не поддерживающие ни многозадачность, ни параллельные вычисления. Пример - DOS.
2. Поддерживающие многозадачность, но не поддерживающие параллельные вычисления. Пример - Windows 3.x, Windows 9x.
3. Поддерживающие как многопоточность, так и параллельные вычисления. Пример: Windows NT, Unix.
Если ОС не поддерживает ничего, то все, что можно сделать, это ручками организовать поочередное выполнение разных задач на одном процессорном ядре. (приведенная выше ссылка демонстрирует как раз этот подход)
Во втором случае то же самое можно сделать гораздо проще - с использованием средств ОС.
В третьем случае можно средствами ОС организовать реально параллельные вычисления, т.е. разные задачи будут выполнять различными ядрами многоядерного процессора или различными процессорами многопроцессорной системы. Код при этом будет почти или в точности таким же, как и в случае 2.
Unconnected
Программа,в которой я собираюсь реализовывать параллельные процессы,будет работать только на XP.) Можно привести любой простейший на Паскале? Просто меня интересует именно программная реализация.
volvo
Паскали - они разные бывают. Если тебе все еще хочется изобретать велосипеды - то ходи по ссылке, которую дал Оззя, там есть примеры. Если все-таки использовать более современное ПО - то см. сюда: Класс Thread
Unconnected
В данный момент я пишу на паскале,пооэтому придётся ходить по ссылке и разбирться в английских комментариях smile.gif blink.gif
volvo
Опять 25... Тебя русским языком спрашиваю, на КАКОМ Паскале ты пишешь? На Турбо что-ли?
Unconnected
Volvo, в твоём предпоследнем сообщении нет ни одного вопросительного знака no1.gif Да, на TP7.
andriano
Unconnected, TP7 не умеет генерировать код для WinXP. С чем, собственно, связаны как вопросы volvo, так и мои.
Для TP7 справедлив только п.1. в моем почсте №6, а для BP7 - 1 и 2.
Unconnected
То есть,запуская паскальную программу в XP,она открывается в DOSовском окне,правильно? smile.gif
andriano
Не совсем.
Любой компилятор может сделать ехе-шник только для конкретной ОС. Дркгое дело, что программы, сделанные для DOS в большинстве своем можно запустить в DOS-сессии Windows.
Но DOS многопоточность не поддерживает, следовательно, программа для него неспособна одновременно выполнять разные действия, только поочередно.
Unconnected
Ясно.Получается,что ссылка,которую запостил Ozzя , актуальна только для Borland Pascal и для Windows 3.x, Windows 9x?
xds
Unconnected, что конкретно надо реализовать?
andriano
Цитата(Unconnected @ 24.08.2008 17:06) *

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

Ссылка касается псевдопараллельных действий. И ничего другого в DOS, Win3x,Win9x быть не может.
Опиши подробнее, что именно тебе нужно, тогда можно будет дать какой-либо конкретный совет (общетеоретические ответы ты, похоже, не воспринимаешь).
Unconnected
Ну,например,выполняется в цикле вывод на экран чисел от одного до ста,и при этом с воспроизводится wav-файл.
andriano
Цитата(Unconnected @ 24.08.2008 22:59) *

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

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