r multiple threads can cause race conditions you sleeping? / it-юмор :: are you going to sleep :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)
Подробнее
r multiple threads can cause race conditions
you
sleeping?
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,are you going to sleep
Я хуёвый объясняльщик, но попробую объяснить на примере.
Стоит стол и вокруг него три чела. Первый кладёт на стол куски хлеба, Второй мажет кусок хлеба на столе маслом, Третий забирает со стола уже намазанный маслом кусок хлеба и кладёт его в корзинку. Если они работают синхронно, то процесс идёт как по маслу (фьють-ха), но если один из них под метамфетамином и способен работать быстрее остальных двух, и при этом его никто не заставил этих остальных дожидаться, то он может запросто сломать весь процесс.
Если под метом Первый: он кладёт куски хлеба настолько быстро, что второй не успевает мазать, а третий не успевает забирать. Может положить второй кусок хлеба поверх еще не намазанного первого, что приводит к лишним пустым кускам хлеба на столе, или положить второй кусок поверх масла, что приводит к случайным двойным бутерам в корзинке.
Если под метом Второй: он орудует ножом для масла как настоящий про и может либо намазать стол, потому что Первый не успел еще положить туда хлеб, либо намазать один кусок два раза, либо вообще намазать руку Третьему, когда тот пытается забрать хлеб. У нас часть бутеров без масла, еще часть с двойной порцией, еще и Третий с грязной рукой. Мда.
Если под метом Третий: он забирает хлеб быстрее, чем второй успевает его намазать, что приводит нас к пустым бутерам, либо бесполезно машет рукой по столу, когда там еще ничего нет. Опять фигня в корзинке, а Третий зря воздух гоняет.
А теперь представьте, если все трое под разными веществами и каждый работает в собственном темпе, не оглядываясь на остальных, — хуй мы сегодня пожрём нормальных бутеров.
Вся эта хуйня называется в программировании «состояние гонки». Это ошибка проектирования системы создания бутеров, когда для того, чтобы сделать бутер, нужно работа в строгой очерёдности.
Кто же виноват? Тот, кто выбивается из ритма? Нет, виноват эффективный менеджер, который придумал такой пизданутый способ ускорить создание бутеров.
По-хорошему, чтобы делать бутеры в три раза быстрее, нужно не заставлять трёх человек делать один бутер за одним столом, а посадить каждого из них за отдельный стол, дать им по отдельному ножу, а готовые бутеры пусть уже скидывают в общую корзинку, ну или каждый в свою, а потом собрать вместе.
Если переводить на сам комикс, то очередной эффективный менеджер посадил аж четырёх человек работать над одним комиксом:
Первый кладёт на стол шаблон комикса.
Второй пишет текст «you sleeping?» в ближайшее пустое облачко текста.
Третий пишет текст «I'm trying to» в ближайшее пустое облачко текста.
Четвёртый пишет текст «multiple threads can cause race conditions» в ближайшее пустое облачко текста.
Если они идут по порядку, то получаем привычный формат комикса:
— you sleeping? (спишь?)
— I'm trying to (пытаюсь)
— multiple threads can cause race conditions (многопоточность может привести к состоянию гонки)
— О_О
Но очерёдность никто не контролировал, а Четвёртый чел оказался упорот и вставил свой текст сразу после того, как Первый положил на стол шаблон комикса.
Разумеется, я исковеркал и упростил объяснение в угоду художественности и понятности сравнения, но те, кто знают, в чём я неправ, и в объяснении не нуждаются.
"По-хорошему, чтобы делать бутеры в три раза быстрее, нужно не заставлять трёх человек делать один бутер за одним столом, а посадить каждого из них за отдельный стол, дать им по отдельному ножу, а готовые бутеры пусть уже скидывают в общую корзинку, ну или каждый в свою, а потом собрать вместе."
Ну, вобщем, тоже не всегда. Например, если брусок масла у нас один, и отрезать масло от него в один момент времени может только один человек, а на то, чтобы отодвинуть того, кто сейчас у масла, и подойти к нему самому, требуется время. Тут рациональнее выделить одного резальщика, и наладить процесс подачи кусков масла остальным, которые работают параллельно.
Стоит стол и вокруг него три чела. Первый кладёт на стол куски хлеба, Второй мажет кусок хлеба на столе маслом, Третий забирает со стола уже намазанный маслом кусок хлеба и кладёт его в корзинку. Если они работают синхронно, то процесс идёт как по маслу (фьють-ха), но если один из них под метамфетамином и способен работать быстрее остальных двух, и при этом его никто не заставил этих остальных дожидаться, то он может запросто сломать весь процесс.
Если под метом Первый: он кладёт куски хлеба настолько быстро, что второй не успевает мазать, а третий не успевает забирать. Может положить второй кусок хлеба поверх еще не намазанного первого, что приводит к лишним пустым кускам хлеба на столе, или положить второй кусок поверх масла, что приводит к случайным двойным бутерам в корзинке.
Если под метом Второй: он орудует ножом для масла как настоящий про и может либо намазать стол, потому что Первый не успел еще положить туда хлеб, либо намазать один кусок два раза, либо вообще намазать руку Третьему, когда тот пытается забрать хлеб. У нас часть бутеров без масла, еще часть с двойной порцией, еще и Третий с грязной рукой. Мда.
Если под метом Третий: он забирает хлеб быстрее, чем второй успевает его намазать, что приводит нас к пустым бутерам, либо бесполезно машет рукой по столу, когда там еще ничего нет. Опять фигня в корзинке, а Третий зря воздух гоняет.
А теперь представьте, если все трое под разными веществами и каждый работает в собственном темпе, не оглядываясь на остальных, — хуй мы сегодня пожрём нормальных бутеров.
Вся эта хуйня называется в программировании «состояние гонки». Это ошибка проектирования системы создания бутеров, когда для того, чтобы сделать бутер, нужно работа в строгой очерёдности.
Кто же виноват? Тот, кто выбивается из ритма? Нет, виноват эффективный менеджер, который придумал такой пизданутый способ ускорить создание бутеров.
По-хорошему, чтобы делать бутеры в три раза быстрее, нужно не заставлять трёх человек делать один бутер за одним столом, а посадить каждого из них за отдельный стол, дать им по отдельному ножу, а готовые бутеры пусть уже скидывают в общую корзинку, ну или каждый в свою, а потом собрать вместе.
Если переводить на сам комикс, то очередной эффективный менеджер посадил аж четырёх человек работать над одним комиксом:
Первый кладёт на стол шаблон комикса.
Второй пишет текст «you sleeping?» в ближайшее пустое облачко текста.
Третий пишет текст «I'm trying to» в ближайшее пустое облачко текста.
Четвёртый пишет текст «multiple threads can cause race conditions» в ближайшее пустое облачко текста.
Если они идут по порядку, то получаем привычный формат комикса:
— you sleeping? (спишь?)
— I'm trying to (пытаюсь)
— multiple threads can cause race conditions (многопоточность может привести к состоянию гонки)
— О_О
Но очерёдность никто не контролировал, а Четвёртый чел оказался упорот и вставил свой текст сразу после того, как Первый положил на стол шаблон комикса.
Разумеется, я исковеркал и упростил объяснение в угоду художественности и понятности сравнения, но те, кто знают, в чём я неправ, и в объяснении не нуждаются.
Ну, вобщем, тоже не всегда. Например, если брусок масла у нас один, и отрезать масло от него в один момент времени может только один человек, а на то, чтобы отодвинуть того, кто сейчас у масла, и подойти к нему самому, требуется время. Тут рациональнее выделить одного резальщика, и наладить процесс подачи кусков масла остальным, которые работают параллельно.
подразумевается шаблонный мем, но с объяснением ситуации