Форум: "KOL";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];
ВнизРабота с потоками Найти похожие ветки
← →
Дмитрий Пырин (2008-04-18 09:57) [0]Возникла такая проблема.
необходимо создать в программе некий таймер, который через фиксированные промежутки будет производить определённые действия.
попробовал реализовать это так :
var
ThreadID:DWORD;
...
Procedure ThreadProc(Param:DWORD);
begin
while 1=1 do
begin
Check;
sleep(60000);
end;
end;
....
createThread(nil,0,@ThreadProc,nil,NORMAL_PRIORITY_CLASS,ThreadID);
..
поток работает, но всё остальное висит намертво., форма не реагирует
← →
Дмитрий Пырин (2008-04-18 10:34) [1]хм.. в процедуре потока поменял местами вызов функции и паузу.
Procedure ThreadProc(Param:DWORD);
begin
while 1=1 do
begin
sleep(60000);
Check;
end;
end;
всё заработало.
Интересно, это единичный глюк, или закономерность какаято имеется ?
← →
Demt (2008-04-18 11:23) [2]А кто будет ProcessMessages писать? Из-за этого и висит.
← →
Дмитрий Пырин (2008-04-18 11:58) [3]в каком месте кода ?
← →
exero © (2008-04-18 12:25) [4]А готовой и удобной реализацией из KOL воспользоваться не пробовали?
А вот ProcessMessages в потоке даже не вздумайте использовать!
← →
exero © (2008-04-18 12:31) [5]Вообще неясно из каких соображений вы выбрали поток, а не таймер...
"Если есть возможность обойтись без потоков - надо делать без потоков" - запомните это простое правило.
← →
Дмитрий Пырин (2008-04-18 12:33) [6]к сожалению, я незнаком с реализацией на KOL :(
дайте ссылку пожалуйста.
← →
Дмитрий Пырин (2008-04-18 12:35) [7]Поток, потомучто всю жизнь писал исключительно на Ассемблере, и так было удобнее всего. А как таймер в KOL используется ?
простите за глупые вопросы, я не так давно начал изучать ЯВУ
← →
exeron (2008-04-18 12:40) [8]KOL то у вас установлен? Если нет зайдите http://kolmck.net
А про то как работает можно почитать: http://kolmck.net/docs/KOLBook.rar
А реализацию можно посмотреть в KOL.pas
← →
exeron (2008-04-18 12:47) [9]Вообще говоря, если только начали изучать и нет никаких требований ни на размер файла и быстродействие, лучше обратите внимание на C# и Java.
Они далеко не такие тормозы какими их принято считать,(иногда Delphi плетется далеко в хвосте :( ), зато конечный результат будете получать намного быстрее.
← →
Дмитрий Пырин (2008-04-18 13:04) [10]Быстрый конечный результат не столь важен, для меня важнее эстетика. С я вообще не понимаю, слишком трудно перевариваемый синтаксис.
да и полное абстрагирование от процессора както не радует :(
← →
Дмитрий Пырин (2008-04-18 13:12) [11]а насчёт отказа от использования тредов где это возможно, я-бы не согласился.
треды и фиберы- великолепный инструмент, а учитывая современные многопроцессорные системы, они ещё актуальней. А в случаях, когда необходимо создать защищённое от крэкеров приложение, они просто незаменимы :)
← →
exero © (2008-04-18 13:14) [12]Ну не знаю что вы понимаете под эстетикой.
Что касается синтаксиса - это дело привычки. А вот то что можно наплевать на конкретное железо (а в перспективе и на конкретную ОС) - это есть большой плюс - просто вы этого пока не поняли.
← →
exeron (2008-04-18 13:20) [13]
> а насчёт отказа от использования тредов где это возможно,
Вы меня не правильно поняли - я за то чтобы не использовать их в тех ситуациях когда они не нужны. "Не умножай сущностей сверх меры"
← →
Дмитрий Пырин (2008-04-18 13:30) [14]Оккам как всегда прав :)
я нашёл про таймер, спасибо, буду пробовать
← →
Дмитрий Пырин (2008-04-18 13:38) [15]не хочется разводить флуд :) но не удержусь всёравно.
наплевать на конкретную ОС нам никогда не позволят маркетологи. Разработчики могут сколь угодно петь про кроссплатформенность, но благодаря маркетингу максимум что мы будем иметь-это поддержку всех возможных процессоров, но никак не ОС. Разве вы не в курсе кто тормозит развитие и внедрение в массы новых архитектур ;)
← →
Дмитрий Пырин (2008-04-18 13:43) [16]а С# на мой взгляд, тупиковая ветвь. она приведёт лишь к тому, что вырастет поколение программистов не знающих элементарных азов работы с процессором, и на 100 % зависящих от Microsoft в правах доступа к портам ввода-вывода.
← →
exero © (2008-04-18 14:03) [17]1. Я занимаюсь кросплатформенными приложениями т.к. устройства моего работодателя должны работать на трех основных ОС Windows, Linux и MacOS. Я бы стрельнулся делать это на чем то отличным от Java, хотя признаю проблемы были (особенно с MacOS). Разработку ПО для контроллера вел на C (как и драйвера).
2. У C# и Java есть своя ниша - и она не низкоуровневое программирование. "Лес рубят топором, а бреются бритвой". Поэтому флудить по поводу надо или не надо я не буду.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c