ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Запаузить поток Delphi
  #1  
Старый 23.04.2010, 19:34
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
Провел на форуме:
447878

Репутация: 16
Отправить сообщение для imreadyourmind с помощью ICQ
По умолчанию Запаузить поток Delphi

Кто-как делаетт паузы в потоке?
Слиип и вейтфоробджект вешают программу(
Если использовать суспенд прямо в потоке, то возобновлять поток можно только вне потока.

К примеру если мне нужно запаузить поток на 20 секунд.
Я делал суперизвратно, вот таким способом.

Паузил поток суспендом и запускал вне потока таймер, по истечению которого поток опять запускался. Таким способом появляется максимум траблов и глюков.

Есть какие-нибудь адекватные способы запаузить поток на определенное кол-во времени, не вещая программу?
 
Ответить с цитированием

  #2  
Старый 23.04.2010, 19:40
gisTy
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
Провел на форуме:
3629857

Репутация: 504


По умолчанию

пускать sleep если установлен флаг?
 
Ответить с цитированием

  #3  
Старый 23.04.2010, 19:41
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Самый безглючный вариант - создать глобальную переменную булева типа, а в потоке регулярно проверять её состояние:
while Pause do sleep(1);
 
Ответить с цитированием

  #4  
Старый 23.04.2010, 19:44
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
Провел на форуме:
447878

Репутация: 16
Отправить сообщение для imreadyourmind с помощью ICQ
По умолчанию

Цитата:
пускать sleep если установлен флаг?
слип вешает программу!
Цитата:
Самый безглючный вариант - создать глобальную переменную булева типа, а в потоке регулярно проверять её состояние:
while Pause do sleep(1);
Это понятно, но слип вешает программу))
А мне нужно чтобы к примеру 1 из 100 потоков остановился а остальные 99 продолжали работать. А слип повесит всю 100 потоков.
 
Ответить с цитированием

  #5  
Старый 23.04.2010, 19:45
gisTy
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
Провел на форуме:
3629857

Репутация: 504


По умолчанию

а ты не пробовал слип в потоке запускать?
 
Ответить с цитированием

  #6  
Старый 23.04.2010, 19:47
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
Провел на форуме:
447878

Репутация: 16
Отправить сообщение для imreadyourmind с помощью ICQ
По умолчанию

Цитата:
а ты не пробовал слип в потоке запускать?
Ты сам то пробовал?)))))))) Вешет слип всю программу.Вместе со всеми потоками, пробовал не раз.
 
Ответить с цитированием

  #7  
Старый 23.04.2010, 19:48
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Цитата:
Сообщение от gisTy  
а ты не пробовал слип в потоке запускать?
+1. ТС в потоке слип не повесит программу, проверено
А чтобы можно было только один поток запаузить добавляй в класс потока свойство Pause, тогда у каждого потока свой флаг паузы

Цитата:
Ты сам то пробовал?)))))))) Вешет слип всю программу.Вместе со всеми потоками, пробовал не раз.
бред, ты что-то неправильно делаешь. Я гарантирую это!!11

Sleep - апишная функция, для текущего потока

Последний раз редактировалось GhostOnline; 23.04.2010 в 19:50..
 
Ответить с цитированием

  #8  
Старый 23.04.2010, 19:49
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
Провел на форуме:
447878

Репутация: 16
Отправить сообщение для imreadyourmind с помощью ICQ
По умолчанию

Щас скину исходник и ехе)))))))
 
Ответить с цитированием

  #9  
Старый 23.04.2010, 19:59
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
Провел на форуме:
447878

Репутация: 16
Отправить сообщение для imreadyourmind с помощью ICQ
По умолчанию

Все разобрался. если слип использовать в функции которая используется в синхронайз, то вешается все полностью. Если использовать слип в execute то вешается только один поток))))) Все верно)Сенкс)
 
Ответить с цитированием

  #10  
Старый 23.04.2010, 20:56
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

Репутация: 180
Отправить сообщение для M_script_ с помощью ICQ
По умолчанию

Синхронайзы - зло, слишком не увлекайся ими
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C#] FAQ Многопточные приложения Algol С/С++, C#, Delphi, .NET, Asm 13 13.04.2010 16:08
Delphi - язык или среда? Seravin Болталка 12 28.03.2010 01:46
Литература Delphi Sams С/С++, C#, Delphi, .NET, Asm 2 19.03.2010 19:46
Books PSalm69 Избранное 248 27.10.2009 04:52
Virus.Win32.Induc.a или "Снова записки новичка" _=(mac)=_ Защита ОС: вирусы, антивирусы, файрволы. 5 24.08.2009 23:34



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ