• XSS.stack #1 – первый литературный журнал от юзеров форума

многопоточность в Turbo Pascal

mause

(L1) cache
Пользователь
Регистрация
26.11.2005
Сообщения
597
Реакции
0
Собственно вот... нужно высчитывать паралельно ходу программы одну величину, ну если подробно надо будет описать то опишу, но пока не суть. Вот собствено и вопрос, как запустить вычисление паралельным потоком, брать от туда значения переодически...
 
давно не программил на делфях и тому подобное , если тебя интересует код на паскале то врядли этото пост будет полезным, если сам алгоритм то:


begin // точка входа

CreateThread(0,0,Функция потока("Fuck you world"/*параметр в функцию*/),`dwThrdParam,0,`dwThreadId);

result = Глобальная переменная;
end;

Функция потока(string параметр)
begin
while (true)
. // твои вычисления результат заносится в глобальную пеерменную
.
.
result = глобальная переменная
Sleep(50); // чем больше число тем менее поток будет грузить CPU
end;
 
Запуск параллельного потока есть задача системы, но не языка программирования или компилятора. Да, можно использовать рантайм библиотеку, но это не значит , что все пойдет в обход операционной системы.

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

karabas-barabas
Так получаеться что Функция потока считаеться постоянно и можно переодически брать от туда результат вычисления так? Если да то это то что надо!
 
SilverT
Да нет... не эмуляция.... DOS самый настоящий.... даже намека на другую ось нет.... Там просто 2/3 проги идет инициализация плат управляющих, дров для них для виндовса нету, а самому писать, простите кишка тонка. т.е. придеться искать другие способы просчитать ...
А може все таки?.... =)
 
А может все таки доки? Ведь писали резидентные вирусы, перехватывая прерывания. Вот и ройте по этой теме, только придется с ассемблером возиться, точнее с машинными инструкциями, с этой стороны программирующим под ДОС на ассемблере полегче будет.
 
karabas-barabas
Причем тут таймер? Привыкли мы к винапи и удобности винд. Нечем там поток создать, можно прерывание вызвать, это да, сам по себе архитектуру ДОС и процессора вцелом плоховато знаю, конкретно ничего не скажу.


Я вот сейчас думаю, зачем "плодить поток"? Делаем цикл, в цикле через опр интервл времени проверяем положение резца, если нужно вносим коррективы, продолжаем цикл.

Либо задача поставлена некорректно, либо она и не поставлена вовсе. ТС просто знает что ему нужно, но не может объяснить. Не надо углубляться в технические данные, я не знаю что такое АЦП, уменя нет радиотехнического, образования и я ваще не шарю в микроэлектронике =)
 
SilverT
Да я вот как то то уже задумался... Просто тут все завязано на время... но время я могу счиать до микросекунды(модуль на асеммблере написан как он делает я хз :) ), выполняться опрос положения резца буде очень быстро... не проше ли будет написать простую процедурку которая будет мне считать положение резца от времени... и во время обработки на каждой итерации цикла все это проверять....
ТС просто знает что ему нужно, но не может объяснить.
Угу, примерно так и есть))
АЦП - Аналогово-Цифровой преобразователь ))
Спс, потоки плодить не будем =)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх