CAREERUNDERHOOD Telegram 311
Евгений Козлов пишет про IT
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 4. Процессы в Linux После небольшой паузы продолжаю цикл постов. Сегодня поговорим о том как в Linux и Unix обстоят дела с процессами. Основные определения разобраны в прошлом посте…
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 5. Потоки. Начало.

Продолжаем разговор о конкурентности. Сегодня разбираемся с потоками. Начнем с основ и базовых определений.

Пото́к выполне́ния (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено операционной системой одному ядру процессора. По умолчанию все последовательные программы которые мы пишем имеют один поток исполнения (main).

Зачем нужны потоки если есть процессы, в чем бенефиты?

Создание процессов, если говорить в общем случае - довольно накладная операция. Потому что создание процесса это по сути копирование всей информации из текущего процесса в новый, взаимодействие с ОС и куча системных вызовов. Да, есть оптимизации которые позволяют снизить этот оверхэд и делать меньше тяжелой работы, например Copy-On-Write. Но это детали которые могут отличаться от ОС и её версии.

Создание потока в свою очередь связано с меньшими затратами, так как не нужно ничего копировать, выделять большое количество памяти. Получаем программу которая может работать также быстро как многопроцессная, но при этом расходовать меньше ресурсов.

Но какова цена? В случае многопоточной программы все потоки имеют доступ к общей памяти и ресурсам. И на плечи программиста ложится обязанность описать алгоритм корректным образом чтобы избежать неконсистентного состояния, состояния гонки, дедлоков итп.

Это здорово усложняет логику программы, поэтому наверняка вы слышали советы от коллег или на просторах сети "Пиши многопоточную программу только если избавился от всех неэффективностей в последовательном алгоритме и тебя все еще не устраивает его скорость". Отладка многопоточных программ в проде действительно сложный процесс, поэтому прибегайте к этому способу оптимизации с полным пониманием и осознанием зачем оно вам.

Как работать с потоками?

Для создания потоков в большинстве ОС используюется библиотека pthread.h - POSIX THREADS. Поверх нее реализуются уже в конкретных языках программирования красивые классы и абстракции для создания потоков.

На этом на сегодня всё, в следующем посте сделаем Deep Dive в ядро Linux и разберемся как в него завезли потоки если изначально были только процессы.
-----

Напоминаю, что моя личка открыта для всех, а если в личку неудобно то можно написать через Google Forms.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊



tgoop.com/careerunderhood/311
Create:
Last Update:

CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 5. Потоки. Начало.

Продолжаем разговор о конкурентности. Сегодня разбираемся с потоками. Начнем с основ и базовых определений.

Пото́к выполне́ния (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено операционной системой одному ядру процессора. По умолчанию все последовательные программы которые мы пишем имеют один поток исполнения (main).

Зачем нужны потоки если есть процессы, в чем бенефиты?

Создание процессов, если говорить в общем случае - довольно накладная операция. Потому что создание процесса это по сути копирование всей информации из текущего процесса в новый, взаимодействие с ОС и куча системных вызовов. Да, есть оптимизации которые позволяют снизить этот оверхэд и делать меньше тяжелой работы, например Copy-On-Write. Но это детали которые могут отличаться от ОС и её версии.

Создание потока в свою очередь связано с меньшими затратами, так как не нужно ничего копировать, выделять большое количество памяти. Получаем программу которая может работать также быстро как многопроцессная, но при этом расходовать меньше ресурсов.

Но какова цена? В случае многопоточной программы все потоки имеют доступ к общей памяти и ресурсам. И на плечи программиста ложится обязанность описать алгоритм корректным образом чтобы избежать неконсистентного состояния, состояния гонки, дедлоков итп.

Это здорово усложняет логику программы, поэтому наверняка вы слышали советы от коллег или на просторах сети "Пиши многопоточную программу только если избавился от всех неэффективностей в последовательном алгоритме и тебя все еще не устраивает его скорость". Отладка многопоточных программ в проде действительно сложный процесс, поэтому прибегайте к этому способу оптимизации с полным пониманием и осознанием зачем оно вам.

Как работать с потоками?

Для создания потоков в большинстве ОС используюется библиотека pthread.h - POSIX THREADS. Поверх нее реализуются уже в конкретных языках программирования красивые классы и абстракции для создания потоков.

На этом на сегодня всё, в следующем посте сделаем Deep Dive в ядро Linux и разберемся как в него завезли потоки если изначально были только процессы.
-----

Напоминаю, что моя личка открыта для всех, а если в личку неудобно то можно написать через Google Forms.

Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊

BY Евгений Козлов пишет про IT




Share with your friend now:
tgoop.com/careerunderhood/311

View MORE
Open in Telegram


Telegram News

Date: |

Telegram users themselves will be able to flag and report potentially false content. So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. Users are more open to new information on workdays rather than weekends. In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist. More>>
from us


Telegram Евгений Козлов пишет про IT
FROM American