![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]() Цитата:
![]()
Возможно Я Быдлокодер ©.
|
|
![]() |
![]() |
![]() |
#12 | |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]() Цитата:
Возможно Я Быдлокодер ©.
|
|
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
В общем случае это достаточно хитрый баланс между желаемым и возможным, но обычно делают просто:
1) если у вас бесконечно работы впереди (прога типа SETI), выставляете наименьший из возможных приоритетов и пусть система сама решает, когда переключаться на ваш поток. Поток будет жрать всё оставшееся от других потоков время (т.е. загрузка виртуального ядра будет 100%), но тормозов в работе системы это не вызовет, т.к. если ей нужен будет ЦПУ, она просто его вам не даст. 2) если работа потока связана с синхронным\асинхронным ожиданием данных, типа сокетов, com-портов и прочих файлов, или данных от других потоков, то вызвав очередную операцию ввода-вывода, или очередной WaitForSingleObject(), вы сами отдадите свое свободное время системе на указанный timeout (или навсегда, если таймаут указать забыли, а ввода-вывода никакого нет и не будет )) 3) если у вас поток ни то ни сё, просто вызывайте Sleep(1) почаще, и всё будет хорошо. Почаще это значит хотя бы 100 раз в секунду. Ну или если известно, что ваш поток должен 10 раз в секунду просыпаться и что-то там делать, то смело засыпайте на Sleep(100), делайте, что нужно, после чего опять Sleep(100).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 15.02.2011 в 01:40. |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
http://www.transl-gunsmoker.ru/2010/...111eleven.html
И ещё, возможно, в тему: http://www.transl-gunsmoker.ru/2010/...g-post_18.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось GunSmoker; 15.02.2011 в 01:59. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Да, статья зачётная, читал её в оригинале, но она подразумевает, что программист знает, что делает! А если программистЪ вместо использования WaitFor..() будет долбиться в цикле об булевский флаг, в ожидании данных, и на возражения юзеров от том, что жрать 100% ядра, пока данных нет, как-бы нехорошо, будет тыкать их этой ссылкой, говоря, что "он так видит", то к добру это не приведёт.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
![]()
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
#17 | |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]() Цитата:
Увы Sleep(1) мне не помогает, ибо в моём потоке идёт поиск файлов и получается, что приходиться вызывать Sleep(1) каждый раз, когда найден файл, по-другому никак. Как можно ещё заменить Sleep или мб есть Sleep в пикосекундах?)
Возможно Я Быдлокодер ©.
|
|
![]() |
![]() |
![]() |
#18 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Sleep(0)
Хотя проблему бестолково организованного цикла это и не решит. |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Ты чем-то не тем занимаешься. Ищешь файлы - ну так ищи. Первая ссылка тебе очень в тему.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]()
Sleep(0) вообще ничего не даёт)
Возможно Я Быдлокодер ©.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с TThread | pesi | Общие вопросы Delphi | 2 | 09.08.2010 14:12 |
TThread | Vladislav_I | Общие вопросы Delphi | 0 | 30.04.2010 19:47 |
TThread в Дельфи | ImmortalAlexSan | Помощь студентам | 2 | 23.04.2010 16:24 |
TThread и GUI | Freezer | Общие вопросы Delphi | 8 | 05.08.2009 11:50 |
использование TThread | amandra | Общие вопросы Delphi | 6 | 03.05.2008 03:13 |