![]() |
![]() |
virt |
![]() ![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код program test; {$threading on} uses sysutils ,crt; var finished : longint; function f1(p : pointer) : longint; begin while not keypressed do; InterLockedIncrement(finished); f1 := 0; end; begin finished := 0; BeginThread(@f1); while finished < 1 do; end. Самая простая программа использующая потоки. При запуске загруженность процессора 96-98%. Как сделать чтобы не было такой загрузки? Suspend ,Resume? А без них можно? -------------------- |
![]() ![]() |
hardcase |
![]()
Сообщение
#2
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Видшь, у тебя есть
Код while finished < 1 do; это называется почти бесконечный цикл. - он то как раз и жрёть всё время процессора. Для синхронизации испоьлзуются сигналы, события, мутексы, семафоры Думаю тут надо использовать события - event. Если ты пишешь под Win32, то прочитай про функции CreateEvent, WaitFor, PulseEvent, SetEvent, ResetEvent. Сообщение отредактировано: hardcase - 12.01.2006 14:10 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 19:45 |