Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизМне нужен метод остановить работу компа на N сек Найти похожие ветки
← →
AlexG © (2004-10-21 13:02) [0]Посоветуйте что-нибудь. Sleep() не подходит.
← →
TUser © (2004-10-21 13:03) [1]Напиши, что конкретно надо и почему sleep не подходит
← →
AlexG © (2004-10-21 13:07) [2]Sleep() только примерно устанавливает задержку. Ко времени она прямого отношения не имеет и зависит от тактов ЦП.
Что нужно: <тема ветки>.
← →
Digitman © (2004-10-21 13:09) [3]
> остановить работу компа
нажми кнопку Reset на сист.блоке и подержи ее в нажатом состоянии "некоторое время" ... ничто другое "работу компа" не остановит ... ну разве что Вкыл/Выкл ...
← →
Ega23 © (2004-10-21 13:11) [4]Напиши драйвер. Хотя я неуверен, что это вообще возможно.
← →
Digitman © (2004-10-21 13:12) [5]
> Ega23 © (21.10.04 13:11) [4]
> Напиши драйвер
а код драйвера кто в этот момент будет исполнять ? если умудриться "остановить работу компа" ? Пушкин ?
← →
KSergey © (2004-10-21 13:13) [6]> [2] AlexG © (21.10.04 13:07)
> Sleep() только примерно устанавливает задержку. Ко времени
> она прямого отношения не имеет и зависит от тактов ЦП.
Вранье!
Впрочем, к остановке компа это все равно не имеет отношения.
← →
Игорь Шевченко © (2004-10-21 13:17) [7]
> а код драйвера кто в этот момент будет исполнять ? если
> умудриться "остановить работу компа" ? Пушкин ?
А никто. Драйвер может ждать прерывания, например, от часов. А все остальные запретить.
← →
AlexG © (2004-10-21 13:19) [8]Ну блин, какие дотошные. Не догадаться что ли, что я имею ввиду приоснановить процесс, в котором выполняется приложение? Есть какие-нибудь не дурацкие советы, а по существу?
← →
TUser © (2004-10-21 13:19) [9]Чтобы точно остановить на N секунд
t:=now;
while secondsbetween(t,now) < N do
sleep(round(N/1000))
← →
Ega23 © (2004-10-21 13:21) [10]TUser © (21.10.04 13:19) [9]
Не факт, что это точно...
← →
SammIk © (2004-10-21 13:23) [11]Кто говорит про точность в много задачной ось?
← →
Ega23 © (2004-10-21 13:24) [12]Кто говорит про точность в много задачной ось?
Афтар хочит...
← →
Digitman © (2004-10-21 13:24) [13]
> блин, какие дотошные. Не догадаться что ли, что я имею ввиду
> приоснановить процесс
а ты считаешь, что тут в угадайку люди пришли играться с тобой ?
> Есть какие-нибудь не дурацкие советы, а по существу?
на дурацкий вопрос не шди менее дурацких ответов
а по существу - сделай сервис, который будет в нужное время делать suspend всем трэдам нужного процесса, а через N секунд - соответствующие resume им всем
← →
Игорь Шевченко © (2004-10-21 13:25) [14]
> Не догадаться что ли, что я имею ввиду приоснановить процесс,
> в котором выполняется приложение?
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
читать до полного просветления
← →
AlexG © (2004-10-21 13:27) [15]//TUser © (21.10.04 13:19) [9]
secondsbetween - ты, как я понял, сам написал. А как долго она работает? Мне хотелось бы на код посмотреть. Или ты образно ее упомянул?
//SammIk © (21.10.04 13:23) [11]
Не нужно быть уж настолько точным :)
← →
AlexG © (2004-10-21 13:29) [16]//Игорь Шевченко © (21.10.04 13:25) [14]
Поставим флейм на полочку.
← →
TUser © (2004-10-21 13:30) [17]
> Не факт, что это точно...
Это сильно точнее, чем sleep(10000), а абсолютной точности здесь не достичь.
> secondsbetween - ты, как я понял, сам написал
Нет, ее написал Борланд. В SysUtils, кажется - короче F1 скажет.
← →
TUser © (2004-10-21 13:31) [18]
> Поставим флейм на полочку.
Это приглашение модераторам удалить пост [0] - так?
← →
080D:07BBh © (2004-10-21 13:34) [19]AlexG
вопрос нормально задавать надо
АхтУНГ ПсеВДо коД
procedure Stop(isekund:integer);
var
data,temp:TDatetime;
begin
data = Now()+isekund;// тут посмотри справку как установить секунды
While(Now() <> data)do
begin
Sleep(500);//чтоб остальные проги не тормазили
end;
end;
← →
AlexG © (2004-10-21 13:35) [20]//TUser © (21.10.04 13:30) [17]
У меня Д5. F1 - результат не дал, поэтому так и подумал. У тебя наверно Д7...
//TUser © (21.10.04 13:31) [18]
Будем надеяться на их порядочность... :)
Спасибо TUser за помощь.
← →
Digitman © (2004-10-21 13:36) [21]
> Игорь Шевченко © (21.10.04 13:17) [7]
>
> А никто. Драйвер может ждать прерывания, например, от часов.
> А все остальные запретить.
логично.
HLT я упустил из виду.
только вот при использовании Hyper-Threading Technology решение задачи может быть далеко не столь тривиальным ... да и какповедет себя система после такой вот паузы - тоже вопрос
← →
AlexG © (2004-10-21 13:37) [22]На счет КОМПА я загнул, простите.
← →
Ega23 © (2004-10-21 13:39) [23]080D:07BBh © (21.10.04 13:34) [19]
Не позорься...
← →
TUser © (2004-10-21 13:39) [24]
> У тебя наверно Д7...
Да, а что в D5 этой ф-ции не было?
PS. В D7 - модуль DateUtils
← →
Digitman © (2004-10-21 13:41) [25]
> AlexG © (21.10.04 13:37) [22]
эт точно, загнул ..
если у тебя в процессе один трэд, sleep() в нем ничуть не хуже иных способов
если более одного трэда, в каждом из них д.б. выполнен хотя бы тот же sleep(), иначе работу процесса нельзя будет считать приостановленной, пока не "спит" хотя бы один из его трэдов
имей ввиду
← →
AlexG © (2004-10-21 13:46) [26]//Digitman © (21.10.04 13:41) [25]
Я вообще этим интересуюсь, чтобы остановить только один из тредов процесса...
← →
Anatoly Podgoretsky © (2004-10-21 14:02) [27]Свидетель постоянно менял показания.
← →
Digitman © (2004-10-21 14:11) [28]
> Anatoly Podgoretsky © (21.10.04 14:02) [27]
вот-вот
> AlexG © (21.10.04 13:46) [26]
sleep() в любом трэде работает одинаково
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.045 c