Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Работа с потоками   Найти похожие ветки 

 
Дмитрий Пырин   (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 вся ветка

Текущий архив: 2009.12.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
2-1255767321
Роман
2009-10-17 12:15
2009.12.06
Чтение древа каталогов


3-1230212249
Lera
2008-12-25 16:37
2009.12.06
Запрос и множество


15-1254688209
Юрий
2009-10-05 00:30
2009.12.06
С днем рождения ! 5 октября 2009 понедельник


4-1224487927
worldmen
2008-10-20 11:32
2009.12.06
Вывести список компонент чужого окна.


15-1254601813
Юрий
2009-10-04 00:30
2009.12.06
С днем рождения ! 4 октября 2009 воскресенье