Конференция "KOL" » Работа с потоками [Delphi, Windows]
 
  • Дмитрий Пырин (18.04.08 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);
    ..




    поток работает, но всё остальное висит намертво., форма не реагирует
  • Дмитрий Пырин (18.04.08 10:34) [1]
    хм.. в процедуре потока поменял местами вызов функции и паузу.


    Procedure ThreadProc(Param:DWORD);
    begin
    while 1=1 do
    begin

    sleep(60000);
    Check;

    end;
    end;




    всё заработало.
    Интересно, это единичный глюк, или закономерность какаято имеется ?
  • Demt (18.04.08 11:23) [2]
    А кто будет ProcessMessages писать? Из-за этого и висит.
  • Дмитрий Пырин (18.04.08 11:58) [3]
    в каком месте кода ?
  • exero © (18.04.08 12:25) [4]
    А готовой и удобной реализацией из KOL воспользоваться не пробовали?
    А вот ProcessMessages в потоке даже не вздумайте использовать!
  • exero © (18.04.08 12:31) [5]
    Вообще неясно из каких соображений вы выбрали поток, а не таймер...
    "Если есть возможность обойтись без потоков - надо делать без потоков" - запомните это простое правило.
  • Дмитрий Пырин (18.04.08 12:33) [6]
    к сожалению, я незнаком с реализацией на KOL :(
    дайте ссылку пожалуйста.
  • Дмитрий Пырин (18.04.08 12:35) [7]
    Поток, потомучто всю жизнь писал исключительно на Ассемблере, и так было удобнее всего. А как таймер в KOL  используется ?
    простите за глупые вопросы, я не так давно начал изучать ЯВУ
  • exeron (18.04.08 12:40) [8]
    KOL то у вас установлен? Если нет зайдите http://kolmck.net
    А про то как работает можно почитать: http://kolmck.net/docs/KOLBook.rar
    А реализацию можно посмотреть в KOL.pas
  • exeron (18.04.08 12:47) [9]
    Вообще говоря, если только начали изучать и нет никаких требований ни на размер файла и быстродействие, лучше обратите внимание на C# и Java.
    Они далеко не такие тормозы какими их принято считать,(иногда Delphi плетется далеко в хвосте :( ), зато конечный результат будете получать намного быстрее.
  • Дмитрий Пырин (18.04.08 13:04) [10]
    Быстрый конечный результат не столь важен, для меня важнее эстетика. С  я вообще не понимаю, слишком трудно перевариваемый синтаксис.
    да и полное абстрагирование от процессора както не радует :(
  • Дмитрий Пырин (18.04.08 13:12) [11]
    а насчёт отказа от использования тредов где это возможно, я-бы не согласился.
    треды и фиберы- великолепный инструмент, а учитывая современные многопроцессорные системы, они ещё актуальней. А в случаях, когда необходимо создать защищённое от крэкеров приложение, они просто незаменимы :)
  • exero © (18.04.08 13:14) [12]
    Ну не знаю что вы понимаете под эстетикой.
    Что касается синтаксиса - это дело привычки. А вот то что можно наплевать на конкретное железо (а в перспективе и на конкретную ОС) - это есть большой плюс - просто вы этого пока не поняли.
  • exeron (18.04.08 13:20) [13]

    > а насчёт отказа от использования тредов где это возможно,

    Вы меня не правильно поняли - я за то чтобы не использовать их в тех ситуациях когда они не нужны. "Не умножай сущностей сверх меры"
  • Дмитрий Пырин (18.04.08 13:30) [14]
    Оккам как всегда прав :)
    я нашёл про таймер, спасибо, буду пробовать
  • Дмитрий Пырин (18.04.08 13:38) [15]
    не хочется разводить флуд :) но не удержусь всёравно.
    наплевать на конкретную ОС нам никогда не позволят маркетологи. Разработчики могут сколь угодно петь про кроссплатформенность, но благодаря маркетингу максимум что мы будем иметь-это поддержку всех возможных процессоров, но никак не ОС.  Разве вы не в курсе кто тормозит развитие и внедрение в массы новых архитектур ;)
  • Дмитрий Пырин (18.04.08 13:43) [16]
    а С# на мой взгляд, тупиковая ветвь. она приведёт лишь к тому, что вырастет поколение программистов не знающих элементарных азов работы с процессором, и на 100 % зависящих от Microsoft в правах доступа к портам ввода-вывода.
  • exero © (18.04.08 14:03) [17]
    1. Я занимаюсь кросплатформенными приложениями т.к. устройства моего работодателя должны работать на трех основных ОС Windows, Linux и MacOS. Я бы стрельнулся делать это на чем то отличным от Java, хотя признаю проблемы были (особенно с MacOS). Разработку ПО для контроллера вел на C (как и драйвера).
    2. У C# и Java есть своя ниша - и она не низкоуровневое программирование. "Лес рубят топором, а бреются бритвой". Поэтому флудить по поводу надо или не надо я не буду.
 
Конференция "KOL" » Работа с потоками [Delphi, Windows]
Есть новые Нет новых   [134431   +15][b:0][p:0.002]