#переключение_контекста — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #переключение_контекста, aggregated by home.social.
-
Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от без стековых сопрограмм к стековым
В прошлой статье был рассмотрен процесс создания без стековых сопрограмм на основе библиотеки прото потоков. При этом вся работа по хранению состояния сопрограммы и сохранению ее параметров полностью ложится на плечи программиста. В данной статье я хочу рассказать о том, как можно автоматизировать выполнение этих задач при помощи стековых корутин, рассмотрю 3 способа передачи управления от одной сопрограммы к другой, и опишу с какими проблемами приходиться сталкиваться при создании стековых корутин. Продолжим писать на языке Си и добавим ассемблер. Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек. Под обычной я подразумеваю функцию, определённую синтаксисом языка, с указанием возвращаемого типа, имени функции, а также её параметров. Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу. Обычная функция в Си передает управление вызывающему коду при помощи оператора return. При этом область стековой памяти, хранящая локальные переменные, больше не принадлежит функции.
-
Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от без стековых сопрограмм к стековым
В прошлой статье был рассмотрен процесс создания без стековых сопрограмм на основе библиотеки прото потоков. При этом вся работа по хранению состояния сопрограммы и сохранению ее параметров полностью ложится на плечи программиста. В данной статье я хочу рассказать о том, как можно автоматизировать выполнение этих задач при помощи стековых корутин, рассмотрю 3 способа передачи управления от одной сопрограммы к другой, и опишу с какими проблемами приходиться сталкиваться при создании стековых корутин. Продолжим писать на языке Си и добавим ассемблер. Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек. Под обычной я подразумеваю функцию, определённую синтаксисом языка, с указанием возвращаемого типа, имени функции, а также её параметров. Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу. Обычная функция в Си передает управление вызывающему коду при помощи оператора return. При этом область стековой памяти, хранящая локальные переменные, больше не принадлежит функции.
-
Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от без стековых сопрограмм к стековым
В прошлой статье был рассмотрен процесс создания без стековых сопрограмм на основе библиотеки прото потоков. При этом вся работа по хранению состояния сопрограммы и сохранению ее параметров полностью ложится на плечи программиста. В данной статье я хочу рассказать о том, как можно автоматизировать выполнение этих задач при помощи стековых корутин, рассмотрю 3 способа передачи управления от одной сопрограммы к другой, и опишу с какими проблемами приходиться сталкиваться при создании стековых корутин. Продолжим писать на языке Си и добавим ассемблер. Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек. Под обычной я подразумеваю функцию, определённую синтаксисом языка, с указанием возвращаемого типа, имени функции, а также её параметров. Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу. Обычная функция в Си передает управление вызывающему коду при помощи оператора return. При этом область стековой памяти, хранящая локальные переменные, больше не принадлежит функции.
-
Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от без стековых сопрограмм к стековым
В прошлой статье был рассмотрен процесс создания без стековых сопрограмм на основе библиотеки прото потоков. При этом вся работа по хранению состояния сопрограммы и сохранению ее параметров полностью ложится на плечи программиста. В данной статье я хочу рассказать о том, как можно автоматизировать выполнение этих задач при помощи стековых корутин, рассмотрю 3 способа передачи управления от одной сопрограммы к другой, и опишу с какими проблемами приходиться сталкиваться при создании стековых корутин. Продолжим писать на языке Си и добавим ассемблер. Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек. Под обычной я подразумеваю функцию, определённую синтаксисом языка, с указанием возвращаемого типа, имени функции, а также её параметров. Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу. Обычная функция в Си передает управление вызывающему коду при помощи оператора return. При этом область стековой памяти, хранящая локальные переменные, больше не принадлежит функции.
-
flowOn vs withContext: правильное переключение потоков в Flow в Kotlin
Привет, Хабр! Сегодня мы рассмотрим, как правильно переключать контексты в Kotlin Flow и почему flowOn — это не то же самое, что withContext .
https://habr.com/ru/companies/otus/articles/932230/
#kotlin #Kotlin_Flow #корутины_Kotlin #flowOn #withContext #переключение_контекста #CoroutineDispatcher #DispatchersIO #DispatchersDefault
-
flowOn vs withContext: правильное переключение потоков в Flow в Kotlin
Привет, Хабр! Сегодня мы рассмотрим, как правильно переключать контексты в Kotlin Flow и почему flowOn — это не то же самое, что withContext .
https://habr.com/ru/companies/otus/articles/932230/
#kotlin #Kotlin_Flow #корутины_Kotlin #flowOn #withContext #переключение_контекста #CoroutineDispatcher #DispatchersIO #DispatchersDefault
-
flowOn vs withContext: правильное переключение потоков в Flow в Kotlin
Привет, Хабр! Сегодня мы рассмотрим, как правильно переключать контексты в Kotlin Flow и почему flowOn — это не то же самое, что withContext .
https://habr.com/ru/companies/otus/articles/932230/
#kotlin #Kotlin_Flow #корутины_Kotlin #flowOn #withContext #переключение_контекста #CoroutineDispatcher #DispatchersIO #DispatchersDefault
-
flowOn vs withContext: правильное переключение потоков в Flow в Kotlin
Привет, Хабр! Сегодня мы рассмотрим, как правильно переключать контексты в Kotlin Flow и почему flowOn — это не то же самое, что withContext .
https://habr.com/ru/companies/otus/articles/932230/
#kotlin #Kotlin_Flow #корутины_Kotlin #flowOn #withContext #переключение_контекста #CoroutineDispatcher #DispatchersIO #DispatchersDefault
-
[Перевод] Переключение между контекстами убивает эффективность разработчиков на корню
Я программист. Меня всё время отвлекают, и я хочу об этом поговорить. Вы когда-нибудь задумывались, что сильнее всего подрывает эффективность работы? Много чего. Но мы часто недооцениваем один фактор, который выделяется на фоне остальных. Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы . И это далеко не всё. Я работаю с командами разработчиков вот уже десять лет, и мы постоянно недооцениваем вред, который нам причиняют такие отвлекающие факторы. В этой статье разбираемся, почему переключение между контекстами обходится так дорого и что с этим делать.
https://habr.com/ru/companies/netologyru/articles/890474/
#таймменеджмент #состояние_потока #отвлечение #отвлекающие_факторы #концентрация #усталость #фокусировка #переключение_контекста #поток #хороший_код
-
[Перевод] Переключение между контекстами убивает эффективность разработчиков на корню
Я программист. Меня всё время отвлекают, и я хочу об этом поговорить. Вы когда-нибудь задумывались, что сильнее всего подрывает эффективность работы? Много чего. Но мы часто недооцениваем один фактор, который выделяется на фоне остальных. Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы . И это далеко не всё. Я работаю с командами разработчиков вот уже десять лет, и мы постоянно недооцениваем вред, который нам причиняют такие отвлекающие факторы. В этой статье разбираемся, почему переключение между контекстами обходится так дорого и что с этим делать.
https://habr.com/ru/companies/netologyru/articles/890474/
#таймменеджмент #состояние_потока #отвлечение #отвлекающие_факторы #концентрация #усталость #фокусировка #переключение_контекста #поток #хороший_код
-
[Перевод] Переключение между контекстами убивает эффективность разработчиков на корню
Я программист. Меня всё время отвлекают, и я хочу об этом поговорить. Вы когда-нибудь задумывались, что сильнее всего подрывает эффективность работы? Много чего. Но мы часто недооцениваем один фактор, который выделяется на фоне остальных. Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы . И это далеко не всё. Я работаю с командами разработчиков вот уже десять лет, и мы постоянно недооцениваем вред, который нам причиняют такие отвлекающие факторы. В этой статье разбираемся, почему переключение между контекстами обходится так дорого и что с этим делать.
https://habr.com/ru/companies/netologyru/articles/890474/
#таймменеджмент #состояние_потока #отвлечение #отвлекающие_факторы #концентрация #усталость #фокусировка #переключение_контекста #поток #хороший_код
-
[Перевод] Переключение между контекстами убивает эффективность разработчиков на корню
Я программист. Меня всё время отвлекают, и я хочу об этом поговорить. Вы когда-нибудь задумывались, что сильнее всего подрывает эффективность работы? Много чего. Но мы часто недооцениваем один фактор, который выделяется на фоне остальных. Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы . И это далеко не всё. Я работаю с командами разработчиков вот уже десять лет, и мы постоянно недооцениваем вред, который нам причиняют такие отвлекающие факторы. В этой статье разбираемся, почему переключение между контекстами обходится так дорого и что с этим делать.
https://habr.com/ru/companies/netologyru/articles/890474/
#таймменеджмент #состояние_потока #отвлечение #отвлекающие_факторы #концентрация #усталость #фокусировка #переключение_контекста #поток #хороший_код
-
[Перевод] Xv6: учебная Unix-подобная ОС. Глава 7. Планирование процессов
Глава расскажет, что такое мультиплексирование процессов, как xv6 переключает процессы, как xv6 синхронизирует процессы с помощью sleep и wakeup, как работает семафор, как работает канал (pipe), как случаются инверсии приоритетов и образуются конвои процессов, как правильно убить процесс и укротить грохочущее стадо процессов.
https://habr.com/ru/articles/801567/
#xv6 #семафор #переключение_контекста #мультиплексирование #условные_переменные #планировщик #sleep #wakeup #взаимоблокировки #каналы
-
[Перевод] Xv6: учебная Unix-подобная ОС. Глава 7. Планирование процессов
Глава расскажет, что такое мультиплексирование процессов, как xv6 переключает процессы, как xv6 синхронизирует процессы с помощью sleep и wakeup, как работает семафор, как работает канал (pipe), как случаются инверсии приоритетов и образуются конвои процессов, как правильно убить процесс и укротить грохочущее стадо процессов.
https://habr.com/ru/articles/801567/
#xv6 #семафор #переключение_контекста #мультиплексирование #условные_переменные #планировщик #sleep #wakeup #взаимоблокировки #каналы
-
[Перевод] Xv6: учебная Unix-подобная ОС. Глава 7. Планирование процессов
Глава расскажет, что такое мультиплексирование процессов, как xv6 переключает процессы, как xv6 синхронизирует процессы с помощью sleep и wakeup, как работает семафор, как работает канал (pipe), как случаются инверсии приоритетов и образуются конвои процессов, как правильно убить процесс и укротить грохочущее стадо процессов.
https://habr.com/ru/articles/801567/
#xv6 #семафор #переключение_контекста #мультиплексирование #условные_переменные #планировщик #sleep #wakeup #взаимоблокировки #каналы