HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 16
По умолчанию Запаузить поток Delphi

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

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

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

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

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

Репутация: 504


По умолчанию

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

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

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

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

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

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

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

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

Репутация: 504


По умолчанию

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

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

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

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

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

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

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

  #7  
Старый 23.04.2010, 19:47
imreadyourmind
Познающий
Регистрация: 23.02.2010
Сообщений: 49
С нами: 8534478

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

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

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

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

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

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

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

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

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

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

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



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



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


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




ANTICHAT ™ © 2001- Antichat Kft.