Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
11-1208529256
CutPaste
2008-04-18 18:34
2009.12.06
Обработка строк в буфере обмена


2-1255949054
Роман
2009-10-19 14:44
2009.12.06
как вывести отчет


2-1255684283
Aleks
2009-10-16 13:11
2009.12.06
Как отключить гор.скроллбар у ListView?


6-1210247266
laao
2008-05-08 15:47
2009.12.06
как корректно завершать работу с поднятым IdHTTPServer ?


2-1254662801
newbart
2009-10-04 17:26
2009.12.06
Ошибки при запуске приложений из Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский