Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.267 c
1-1098788125
Alexious
2004-10-26 14:55
2004.11.07
Массивы


3-1097148449
Hmm
2004-10-07 15:27
2004.11.07
Проблемма с запуском скрипта создания базы из моего приложения.


9-1089703979
volser
2004-07-13 11:32
2004.11.07
Изменение тектуры


1-1098791757
Maxximusss
2004-10-26 15:55
2004.11.07
Сделать MainForm невидимым.


1-1098610825
Morfey
2004-10-24 13:40
2004.11.07
Привязка к сетке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский