"В состоянии пассивного ожидания решений от группы поддержки Вовочка склонился над заданием, делая вид, что думает. На самом деле он гадал, когда будет пора еще раз попроситься на выход. «Беда в том, что никто из группы не сможет сигнализировать мне, когда у них будет готово»,- думал он. И тут Вовочкин сосед попросил его хриплым шепотом: «Слышь, командир, помоги решить задачу!» Чтобы отвлечься от своего задания, которое ему уже порядком надоело, Вовочка взял задание соседа. Вовочка неторопливо читал и перечитывал чужое задание, сравнивая со своим, и размышлял, какое из них труднее. При этом сосед находился в активном ожидании, внимательно наблюдая, что делает Вовочка и поминутно спрашивая: «Ну как?» Кроме этого, Вовочкин сосед еще пытался сам что-то писать, периодически отрываясь для очередного «Ну как?» - Да никак,- ответил, наконец, Вовочка и вернул соседу его задание."
Busy waiting thread. Представим себе на огороде двох друзей: Славу и Максима. Слава собирает помидоры и кидает их в ящик, а Максим (активно ожидающий поток), в это время, стоит рядом с другом и, время от времени, посматривает в ящик, не полон ли он. Как только ящик заполнится, Максим относит его в сарай.
Sleeping thread. Представим тех же самых двоих друзей, но только теперь Максим (пассивно ожидающий поток поток) сидит где-то в начале огорода и просто ждет, пока Слава позовет его, чтобы он забрал ящик с помидорами и отнес их в сарай.
Когда Вы звоните в сервис-центр, постоянно нарываетесь на "все операторы заняты", и каждые 5 минут звоните снова, это активное ожидаение (как у Busy waiting thread), а вот девушки в call-центре соседней фирмы, которые ждут звонков, перемежая это занятие чаем, - это пассивное ожидание (как у Sleeping thread).
Busy waiting: Работник ходит за начальником и спрашивает через равные промежутки времени есть ли для него задание. Если задание есть, то он делает его и продолжает ходить за начальником.
Sleeping thread: Работник спит на рабочем месте пока начальник не ткнет того в бок и не даст ему задание. После выполнения задания работник снова засыпает.
Сигизмунд и Евлампий делают курсовую работу по исследованию структуры тентаклей креветки. Пока Сигизмунд подготавливал стол для вскрытия, мыл руки и проводил дезинфекцию своей одежды, Евлампий ловил креветок в соседнем водоёме. Когда Сигизмунд уже закончил приготовления, он не мог продолжать без объектов исследования, поэтому у него появился выбор: а) Пассивное ожидание: он отложит свои исследования и сядет смотреть телевизор, а когда явится Евлампий - помоет руки, проведёт дезинфекцию и начнёт вскрытие б) Активное ожидание: он будет постоянно звонить Евлампию, узнавая, не наловил ли он этих розовых чудовищ, тем самым тратя своё время, но зато ему не надо будет заново подготавливать эксперимент.
Активное ожидание - Охотоник приехал в тайгу, засел в кустах и непрерывно сканирует местность - не пришёл ли медведь. Пассивное ожидание - Охотник приехал в тайгу, и решил, что когда медведь появится - охотник его услышит, поэтому он решил пока что поставить себе палатку, готовый при первом же звуке кинуться к ружью.
Представим себе обычную семью - маму, папу и сына 10 лет. Дело происходит вечером, мама готовит ужин. Папа - человек взрослый, ко всему подходит серьезно, и он очень сильно боится остаться без еды, зная, что голод непоправимо подкосит его здоровье. Поэтому глава семейства каждые 5 минут подходит и заискивающе спрашивает у жены - скоро ли? В этой семье папа - активно ожидающий поток.
Сын же еще неопытен в поглощении пищи, к тому же он играет в папин смартфон - поэтому его категорически не волнует судьба ужина. Впрочем, он понимает, что если не придет, когда мама позовет его кушать - последствия могут быть непоправимыми. Таким образом, сын ждет сигнала от мамы для того чтобы начать есть; его можно назвать пассивно ожидающим потоком.
Представим себе обычную семью - маму, папу и сына 10 лет. Дело происходит вечером, мама готовит ужин. Папа - человек взрослый, ко всему подходит серьезно, и он очень сильно боится остаться без еды, зная, что голод непоправимо подкосит его здоровье. Поэтому глава семейства каждые 5 минут подходит и заискивающе спрашивает у жены - скоро ли? В этой семье папа - активно ожидающий поток.
Сын же еще неопытен в поглощении пищи, к тому же он играет в папин смартфон - поэтому его категорически не волнует судьба ужина. Впрочем, он понимает, что если не придет, когда мама позовет его кушать - последствия могут быть непоправимыми. Таким образом, сын ждет сигнала от мамы для того чтобы начать есть; его можно назвать пассивно ожидающим потоком.
Сын-подросток - ярый футбольный фанат агитирует отца посмотреть вместе ночную трансляцию футбольного матча Лиги Чемпионов. Папа - сторож, только вернувшийся с дежурства и не спавший трое суток, никак не может отказать единственному сыну и садится с ним на диван.
Матч начался.
Сынок ловит взглядом каждое движение на экране, ждет, когда наконец его любимая команда забьет заветный мяч!!! (он в активном ожидании)
Папа откровенно храпит, ему не до матча. Сквозь глубину своего сна он ждет лишь бешеного визга сына с отчаянными криками "ГОЛ!", чтобы очнуться и, зевнув, выявить свою причастность к общей победе и после матча пойти в спальню. (папа в пассивном ожидании)
buzy waiting thread- Это когда ты приходишь на паре в 8 часов утро, не выспивший а приходит преподаватель только к 9-й, ты засыпаешь в аудитории,а каждый 5 минут просыпаешься думая что пришёл преподаватель, а его нет ещё, а ты его ждёшь...!
sleeping thread - на экзамене по математическому анализу, экзаминатор дает полтара часа чтобы решить три задачи по практике, а только при условии того что что удачно все задачи решил, тебе дает 2 вопроса по теории!
вот студент Иван Иванов уже 2 часа не может решить 3 задачи.... у него - sleeping thread. все уже сдали и экзаминатор спрошевает Ивану, "Вот дорогой, уже прошёл 3 часа и 40 мин, что с тобой делать теперь? решил задачи?" Иван ответил "я пасс (sleeping thread) :(, у меня не получается " и преподаватель ему отвечал, тогда только до передачи :)
Busy waiting thread, бабушка, это когда ты мешаешь тесто до тех пор, пока оно не станет однородным. А Sleeping thread, это когда ты просто ждешь, когда сварятся яйца, чтобы закончить делать салат.
это, первое, когда девушка каждый день с волнением ждет "две полоски" или, второе, - через месяц процесс дает о себе знать и она осознает, что год семьи прошел успешно!
призывник - пассивно ожидающий поток - сам не пойдет в военкомат, а будет ждать когда за ним придут и призовут отдать долг, а студент на паре каждые пять минут смотрит на часы с нетерпением ожидая ее окончания - это активно-ожидающий поток.
Вася и Катя хотят позвонить, но оказалось что у обоих нет денег на счету. Оба кладут деньги на счет. У Вася подключена услуга оповещения о пополнении счета SMS-кой, и он не парится и кладет трубку в карман, когда деньги придут он об этом узнает и позвонит. У Кати же такой услуги нет, поэтому она переодически отправляет запрос о состоянии счета и как только в ответе сообщится, что деньги есть, она позвонит.
Sleeping thread Вы отдыхаете на диване и пьете пиво. Вам ничего не надо и вы никому не мешаете. Вы Sleeping thread. Как только вы почуствовали что пиво просится наружу, вы "проснулись" и побежали в тулет. Если в нем засела жена, с романом вы превращаетесь в Busy waiting thread. Вы стучите в дверь, скулите и угрожаете выключить свет, рассказываете как дорого стоит пересадка мочевого пузыря.
Busy waiting therad & sleeping thread Друг Васи и Мити Гена уж с давних пор приходит на каждые выборы и спрашивает - "А тут у вас креслице не освободилось ли?" Упорный товарищ. Не то что Вася. Лишь старина Борис смог его побудить: "Вася, ты, панимаш, будешь моим преемником!"
Вы пришли с работы, где ботрачили целый день (CPU burst) и хотите ещё немного поработать :). Но жена кудато забрала ваш ноутбук "mutex" (claim the mutex). Вам нечего делать без ноута, поэтому вам нужно поспать пока не придет жена (sleeping thread). По таймауту Вас разбудил будильник. Жены небыло всю ночь и вы превращаетесь в агрессивный buzy waiting thread. Вы не идете на работу совершать CPU burst, а каждые 5 минут звоните ей на мобильник, кусаете ногти, пускаете пар из ноздрей, и грозите разводом; все бестолку. Жена где то зависла... а Вы, в итоге, рискуете вылететь с работы с ошибкой TaskSchedulerException.
Вы заказали в интернет-магазине редкую книгу, но, поскольку вы живете в другом городе, в качестве варианта доставки выбрали отправку по почте. "Ну что же, - подумали вы, - когда книга придет, мне принесут извещение с почты, я просто схожу и заберу ее". После чего продолжили заниматься своими делами. В таком случае вы - Sleeping thread ("спящий поток").
В следующий раз вы заказали еще более редкую и ценную книгу, и не можете спокойно спать, пока она у вас не на руках. В таком случае вы каждый день после работы заходите на почту, проверяя, не пришла ли книга, не потерялось ли извещение. В таком случае вы - Busy waiting thread ("деловитый ждущий поток"). Вы можете заходить на почту и до работы, и в обеденный перерыв, а можете вовсе поселиться прямо там и ждать, поминутно справляясь о посылке :). Но так никто не делает, потому что это слишком накладно по времени как для вас, так и для почты.
Перед тем как кончить, Олег замирает, зажимает глаза и какое-то время лежит на Маше неподвижно в ожидании чуда. А Игорь просто останавливается и лежит спит, пока не получит от Маши оплеуху. Нет в жизни счастья.
попытаюсь объяснить свое понимание, хотя может и ошибаюсь ;)
Оба варианта означают что поток полностью бездействует, различия: - Busy waiting thread - имеется событие (заранее условленное), выполнение которого ожидает поток, как только событие выполнится, он автоматически продолжает/начинает выполнение (например поток ожидает окончание работы другого потока); поэтому уместны сравнения с тем что поток как бы постоянно спрашивает о наступленнии события, но такое сравнение не совсем верно, т.к. на самом деле операционная система смотрит по зарегистрированным событиям, кого надо будить, а кого нет :) - Sleeping thread - поток начнет выполнение только после внешней команды на начало выполнения. никакого особого события он не ждет.
Примером можно привести солдат в казарме: - тем кому через 2 часа идти на караул - спят, как придет время их разбудят (аналогия - смотрят время и сами выходят) - это активные ожидающие потоки. - к солдату должны позвонить, он попросил старшину позвать его когда позвонят - активно ожидающий поток. - остальным солдатам все глубоко пофигу, пока кто нить не придет и не пошлет куда нить - пассивно ожидающие потоки.