Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обьясните, пж, почему поток без sleep(1) тормозит? [D7, WinXP]


Zilog ©   (2005-02-24 12:31:00) 

Обьясните, пж, почему поток без sleep(1) тормозит?

Что собственно, Sleep(1) делает? (кроме задержки в одну мс)


iskatel   (2005-02-25 00:20:00) [1]

2Jolik а ты поставь бездействию системы приоритет time critical :-)

2Zilog
/"...На форуме куча тем была с вопросом почему тормозит поток..."/
так чего тебе еще надо то???


Набережных С.   (2005-02-24 18:51:00) [2]


> Jolik ©   (24.02.05 18:28) [13]


> Если sleep не вызывать - "Бездействие системы" никогда не
> получит управление, но это не значит, что комп будет медленно
> работать, ибо многозадачность в NT вытесняющая.
> Но, все равно, так делать нельзя, хотя бы потому, что пользователь
> когда увидет - ахнет, и будет смеяться...

Дык смеяться уже хочется, даже еще не глянув и не ахнув...


Jolik   (2005-02-24 18:28:00) [3]

дело в том, что когда Вы вызываете sleep - это значит Вы сами передаете управление другим потокам и система знает, что в течение одной милисекунды вам его можно не возвращать. В общем случае Вы передаете управление "процессу" который зовется "Бездействие системы" - поэтому снижается показатель загрузки процессора, ибо он там не учавствует.
Если sleep не вызывать - "Бездействие системы" никогда не получит управление, но это не значит, что комп будет медленно работать, ибо многозадачность в NT вытесняющая.
Но, все равно, так делать нельзя, хотя бы потому, что пользователь когда увидет - ахнет, и будет смеяться...


Anatoly Podgoretsky   (2005-02-24 14:33:00) [4]

Не ну это к торможению никакого отношения не имеет. Интересует ответ количественный, например со sleep(1) поток отрабатывает за N ms, а без него за N+M ms


DiamondShark   (2005-02-24 14:25:00) [5]

Попробуем протелепать.
"Тормозит" == "занимает много процессорного времени".
Угадал?


Anatoly Podgoretsky   (2005-02-24 14:24:00) [6]

Zilog ©   (24.02.05 13:54) [7]
Не то! Тебе Инструктор   (24.02.05 12:32) [1]
кто тормозит? как это выражается?

Задал конкретный вопрос. Будь добр ответит на него, может окажется все с точностью наоборот.


VMcL   (2005-02-24 14:15:00) [7]

>> Инструктор   (24.02.05 13:57) [8]

Я бы даже сказал как раз наоборот: второй вариант более тормознутый.
:D


Инструктор   (2005-02-24 13:57:00) [8]

так поток тормозит сам по себе или тормозит что другое? Формулировать верно уборщица тетя Глаша будет?

вот что тут тормознутого:

for i:=1 to 1000 do begin
......

end;

в сравнении с:

for i:=1 to 1000 do begin
......
sleep(1)
end;


?!


Zilog   (2005-02-24 13:54:00) [9]

>>(24.02.05 12:58) [6]

така чего узнавать то? На форуме куча тем была с вопросом почему тормозит поток и с советами вставить sleep. Прдполагалось, что с ситуацией знакомы многие.


Anatoly Podgoretsky   (2005-02-24 12:58:00) [10]

Насчет торможения мы так и не узнаем.


Digitman   (2005-02-24 12:46:00) [11]


> Zilog ©   (24.02.05 12:38) [3]
> А где про это можно подробно почитать?


в MSDN, в Microsoft Knowledge Base


DiamondShark   (2005-02-24 12:45:00) [12]

Поставить курсор на слово Sleep и нажать F1.


Zilog   (2005-02-24 12:38:00) [13]

А где про это можно подробно почитать?


Инструктор   (2005-02-24 12:32:00) [14]

кто тормозит? как это выражается?


DiamondShark   (2005-02-24 12:32:00) [15]

Кроме задержки он ещё передаёт процессорное время другим потокам.


Наверх

Титульная страница Поиск, карта сайта Написать письмо