C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Чем можно останосить поток на определенное время>, >так, чтобы не останавливалось...
Daemon
Отправлено: 27.04.2004, 08:39


Ученик-кочегар

Группа: Участник
Сообщений: 13



Чем можно останосить поток на определенное время так, чтобы не останавливалось выполнение остальных потоков?
olegenty
Отправлено: 27.04.2004, 09:18


Ветеран

Группа: Модератор
Сообщений: 2412



если твой поток порождён от TThread, то у него есть метод
CODE

Suspend();
, который и приостановит выполнение потока вплоть до вызова метода
CODE

Resume();
Daemon
Отправлено: 27.04.2004, 09:31


Ученик-кочегар

Группа: Участник
Сообщений: 13



Не, я потоки делаю с помощью _beginthread ()
olegenty
Отправлено: 27.04.2004, 10:03


Ветеран

Группа: Модератор
Сообщений: 2412



тогда ничем не помогу, работал только с потомками TThread, чего и тебе жалаю. это удобно. легко контролировать: разработчики уже всё сделали за тебя. smile.gif
Георгий
Отправлено: 27.04.2004, 23:18


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а связка CreateThread && SuspendThread не подходит?
Guest
Отправлено: 28.04.2004, 08:42


Не зарегистрирован







Если это поток то вроде его можно остановить Sleep(1000) — 1 сек.
если ето не поможет то по событию.
создаееш елемент TEvent у него еть функция WaitFor(1000) — тоже параметр в милисекундах, она может также прерваться самым событием! Очень удобная штука! в сочетании с TThread интересные вещи получаются
Dead Ghost
Отправлено: 29.04.2004, 18:17


Не зарегистрирован







В деяких випадках найкраще робити цикл
[CODE]do
{
//щось або нічого biggrin.gif
//можна вказати умову для переходу, виконання функції ...
}
while(i<2);//або щось подібне
[CODE]

Метод Suspend() і йому подібні "заморожують потік" і тоді неможливо в ньому виконати якісь інші дії ззовні. При його наступному старті Resume()-ом він почне виконуватись з того місця де його зупинили.

Подібний цикл може спасти у випадках коли треба перейти при якісь умові на мітку (і т.д.), а при невиконанні умови все пройде як і при звичайному Resum()-і.

Вернуться в Вопросы программирования в C++Builder