Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2008, 14:45   #1
ilham
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 15
По умолчанию Процессы и потоки

Почему поток должен добровольно отказываться от доступа к процессору уступая своё место другому потоку ?
ilham вне форума Ответить с цитированием
Старый 15.12.2008, 14:47   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Потому что это нужно для реализации "многозадачности"...
mihali4 вне форума Ответить с цитированием
Старый 15.12.2008, 14:52   #3
ilham
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 15
По умолчанию

Спасиб!Но есть ещё какая-та причина !
ilham вне форума Ответить с цитированием
Старый 15.12.2008, 15:46   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

в 90% случаев в Windows поток принудительно снимается с процессора, а
если поток добровольно отказывается от доступа к процессору, то это в большинстве случаев вызов функции Sleep(Ex) либо WaitForSingleObject(Ex).
rpy3uH вне форума Ответить с цитированием
Старый 15.12.2008, 17:12   #5
ilham
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 15
По умолчанию

Я не спросил из-за каких факторов , а спросил почему должен ?
Ну в принципе я думаю поддержка многозадачности это наиболее разумный вариант,но есть ещё что-то
ilham вне форума Ответить с цитированием
Старый 15.12.2008, 17:47   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

он не должен освобождать процессор! никакой поток не должен сам освобождать процессор и не надо никогда об этом париться, система сама разберётся. Ну разумеется это не обозначает что надо ставить приоритет своему потоку THREAD_PRIORITY_TIME_CRITICAL и обрабатывать в этом потоке гигабайты данных. Это только вредит системе.

Последний раз редактировалось rpy3uH; 15.12.2008 в 17:51.
rpy3uH вне форума Ответить с цитированием
Старый 15.12.2008, 19:11   #7
ilham
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 15
По умолчанию

Я тоже думал не должен
Но оказывается есть такая ситуация,когда потоки должны быть вежливыми и вызывать thread_yield(ф-ция не из WinApi)
чтобы уступить своё место!
ilham вне форума Ответить с цитированием
Старый 16.12.2008, 13:01   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ну это уже ваше дело...
rpy3uH вне форума Ответить с цитированием
Старый 16.12.2008, 21:24   #9
ilham
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 15
По умолчанию

Ну дело-то моё !
Я помощи попросил !
У меня есть идея : может быть потому что,пользовательские потоки не являются элементами уровня ядра, соответственно, планировщик системный о них не знает - для него есть только один процесс, что внутри него его не волнует. поэтому потоки сами должны добровольно отдавать управление, иначе выполняться будет только один из них

Может ли этот ответ подойти ?
ilham вне форума Ответить с цитированием
Старый 16.12.2008, 21:35   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
поэтому потоки сами должны добровольно отдавать управление, иначе выполняться будет только один из них
Так только один и выполняется - системный, тот, который следит за "многозадачностью", выделяя кванты времени всем другим, в зависимости от их приоритета...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки AidarBik Win Api 2 04.08.2008 10:00
DLL, потоки BOBAH13 Общие вопросы Delphi 23 27.02.2008 20:43
Потоки в С Raptor Помощь студентам 1 07.01.2008 21:12
Потоки и объекты OrdJONY Общие вопросы Delphi 3 28.11.2007 21:59