SlideShare a Scribd company logo
1 of 20
Download to read offline
GIL
In a nutshell
Многопоточность
Многопоточность - возможность процессора или ядра в
многоядерной системе выполнять несколько потоков
параллельно, а так же - соответствующее свойство
платформы, порождающей данные потоки.
Frequency scaling?
2004
Поток (thread)
Поток - наименьшая единица
обработки, исполнение которой
может быть назначено ядром
ОС.
Несколько потоков могут
существовать в рамках
процесса и совместно
использовать его ресурсы.
Приложение с несколькими процессами
Основные отличия потока от процесса
● Процессы - независимы, потоки существуют, как часть
процесса
● Процессы несут больше информации о состоянии,
потоки - только информацию, которую передали в поток
● Процессы имеют отдельное адресное пространство и
взаимодействуют с помощью специальных механизмов
связи между процессами.
Потоковая безопасность (thread safety)
Код потокобезопасен, если гарантировано функционирует
корректно при использовании из нескольких потоков
одновременно.
Код условно потокобезопасен, если доступ к данным защищен от
состояния гонки
Код не потокобезопасен, если его работа при использовании из
нескольких потоков не гарантирована (и не рекомендована)
Пример небезопасного кода
Что происходит на самом деле
Еще один пример
Состояние гонки (race condition)
Состояние гонки - поведение многопоточного приложения, при
котором его работа зависит от того, в каком порядке
выполняются части кода.
Обеспечение безопасности потока
1. Стиль написания кода, избегающий появления состояний,
которые могут изменяться разными потоками.
2. Синхронизация между потоками, если избежать подобных
состояний невозможно:
a. Мьютексы
b. Использование атомарных операций
Что такое мьютекс (Mutual Exclusion)
Мьютекс - объект взаимного исключения, предназначенный для
защиты объекта в потоке от доступа со стороны других потоков.
Мьютексы нужны для блокирования критических секций - частей
приложения, которые не должны быть исполняемы конкурентно.
Когда поток встречает мьютекс, он “закрывает” доступ к данным
для других потоков до “освобождения” мьютекса.
Что такое атомарная операция
Атомарная операция - операция, которую нельзя прервать до ее
окончания и кажущаяся для остальной системы моментальной.
Атомарность может быть реализована с помощью блокировки.
Даже если операция по факту не происходит моментально, другие
потоки не могут помешать ее исполнению, пока блокировка не
была снята.
Чем нам поможет Mutex?
На этот раз код вернет
корректный результат вне
зависимости от
используемого
интерпретатора.
GIL (наконец-то!)
Что такое GIL
Global Interpreter Lock - механизм, используемый в некоторых
интерпретаторах языков для синхронизации исполнения потоков.
В определенный момент времени только один поток может
использовать инстанс интерпретатора. Интерпретатор, в котором
реализован GIL, позволяет выполнять только один поток в один
момент времени, даже в случае запуска на многоядерной
системе.
Особенности GIL
● Для достижения параллельного исполнения нужно порождать
процессы (так как у каждого процесса свой интерпретатор и
свой GIL)
● В случае, если приложение запущено в виде одного процесса,
увеличение количество процессоров не дает прироста
производительности.
● Требуется соответствующая архитектура для скалирования
приложения.
Плюсы GIL
● Ускорение выполнения кода из-за отсутствия логики
блокирования/разблокирования структур данных.
● Ускорение интеграции с не потокобезопасными
расширениями на языке C
● Более быстрое написание кода (отсутствие необходимости
писать блокировки)
Спасибо!

More Related Content

What's hot

monit — простой мониторинг
monit — простой мониторингmonit — простой мониторинг
monit — простой мониторингAndrew Pantyukhin
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 FinLiudmila Li
 
Git - распределенная система контроля версий
Git - распределенная система контроля версийGit - распределенная система контроля версий
Git - распределенная система контроля версийOleg Poyaganov
 
лекция 3 кмсзи симметричные криптографические системы
лекция 3 кмсзи симметричные криптографические системылекция 3 кмсзи симметричные криптографические системы
лекция 3 кмсзи симметричные криптографические системыdarina andr
 
Спецкурс 2014, занятие 8. Транзакции в БД
Спецкурс 2014, занятие 8. Транзакции в БДСпецкурс 2014, занятие 8. Транзакции в БД
Спецкурс 2014, занятие 8. Транзакции в БД7bits
 
What's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovWhat's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovOpenVZ
 
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовУправление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовOpenVZ
 
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)Web Tech Fun
 
Современные возможности ES-2015 (Promise, Generators, Proxy).
Современные возможности ES-2015 (Promise, Generators, Proxy).Современные возможности ES-2015 (Promise, Generators, Proxy).
Современные возможности ES-2015 (Promise, Generators, Proxy).Valtech Ukraine
 
46
4646
46JIuc
 

What's hot (12)

monit — простой мониторинг
monit — простой мониторингmonit — простой мониторинг
monit — простой мониторинг
 
Root Conf2009 Fin
Root Conf2009 FinRoot Conf2009 Fin
Root Conf2009 Fin
 
Git - распределенная система контроля версий
Git - распределенная система контроля версийGit - распределенная система контроля версий
Git - распределенная система контроля версий
 
лекция 3 кмсзи симметричные криптографические системы
лекция 3 кмсзи симметричные криптографические системылекция 3 кмсзи симметричные криптографические системы
лекция 3 кмсзи симметричные криптографические системы
 
Спецкурс 2014, занятие 8. Транзакции в БД
Спецкурс 2014, занятие 8. Транзакции в БДСпецкурс 2014, занятие 8. Транзакции в БД
Спецкурс 2014, занятие 8. Транзакции в БД
 
What's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovWhat's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey Bronnikov
 
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовУправление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
 
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)
Алексей Кулаков - Современные возможности ES-2015 (Promise, Generators, Proxy)
 
Современные возможности ES-2015 (Promise, Generators, Proxy).
Современные возможности ES-2015 (Promise, Generators, Proxy).Современные возможности ES-2015 (Promise, Generators, Proxy).
Современные возможности ES-2015 (Promise, Generators, Proxy).
 
Fedora Cryptoconsolidation
Fedora CryptoconsolidationFedora Cryptoconsolidation
Fedora Cryptoconsolidation
 
46
4646
46
 
Mercurial vs Svn
Mercurial vs SvnMercurial vs Svn
Mercurial vs Svn
 

Viewers also liked

Eπισκεφτείτε τα υπέροχα ελληνικά νησιά
Eπισκεφτείτε τα υπέροχα ελληνικά νησιάEπισκεφτείτε τα υπέροχα ελληνικά νησιά
Eπισκεφτείτε τα υπέροχα ελληνικά νησιά70athinon
 
SE2016 Android Ievgen Umanets "Right way of syncing"
SE2016 Android Ievgen Umanets "Right way of syncing"SE2016 Android Ievgen Umanets "Right way of syncing"
SE2016 Android Ievgen Umanets "Right way of syncing"Inhacking
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...Inhacking
 
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"Inhacking
 
SE2016 Exotic Oleg Gorbunov "Action cable"
SE2016 Exotic Oleg Gorbunov "Action cable"SE2016 Exotic Oleg Gorbunov "Action cable"
SE2016 Exotic Oleg Gorbunov "Action cable"Inhacking
 
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...Inhacking
 
SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"Inhacking
 

Viewers also liked (13)

Eπισκεφτείτε τα υπέροχα ελληνικά νησιά
Eπισκεφτείτε τα υπέροχα ελληνικά νησιάEπισκεφτείτε τα υπέροχα ελληνικά νησιά
Eπισκεφτείτε τα υπέροχα ελληνικά νησιά
 
SE2016 Android Ievgen Umanets "Right way of syncing"
SE2016 Android Ievgen Umanets "Right way of syncing"SE2016 Android Ievgen Umanets "Right way of syncing"
SE2016 Android Ievgen Umanets "Right way of syncing"
 
Learn java
Learn javaLearn java
Learn java
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
 
Java encapsulation
Java encapsulationJava encapsulation
Java encapsulation
 
Collection in java
Collection in javaCollection in java
Collection in java
 
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
 
SE2016 Exotic Oleg Gorbunov "Action cable"
SE2016 Exotic Oleg Gorbunov "Action cable"SE2016 Exotic Oleg Gorbunov "Action cable"
SE2016 Exotic Oleg Gorbunov "Action cable"
 
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
 
SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"
 
Javaio
JavaioJavaio
Javaio
 
Accessmodifier
AccessmodifierAccessmodifier
Accessmodifier
 
Java networing
Java networingJava networing
Java networing
 

Similar to SE2016 Exotic Elena Morgun "GIL in different programming languages"

Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.Unguryan Vitaliy
 
Android - 11 - Multithreading
Android - 11 - MultithreadingAndroid - 11 - Multithreading
Android - 11 - MultithreadingNoveo
 
Distributed Systems Presentation for Business informatics students (Staroletov)
Distributed Systems Presentation for Business informatics students (Staroletov)Distributed Systems Presentation for Business informatics students (Staroletov)
Distributed Systems Presentation for Business informatics students (Staroletov)Sergey Staroletov
 
кластеры и суперкомпьютеры
кластеры и суперкомпьютерыкластеры и суперкомпьютеры
кластеры и суперкомпьютерыnastena07051995
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Dmitry Tsitelov
 
Aum Cluster
Aum Cluster Aum Cluster
Aum Cluster Mik Hail
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 
основы микропроцессорной техники
основы микропроцессорной техникиосновы микропроцессорной техники
основы микропроцессорной техникиMary Dimitrova
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Vasily Sartakov
 
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithmsAtomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithmsAlexey Fyodorov
 
036
036036
036JIuc
 
ОС в реальном времени
ОС в реальном времениОС в реальном времени
ОС в реальном времениNick535
 
Programming Guide
Programming GuideProgramming Guide
Programming Guideguest63e09c
 
Svitla .Net meetup in Kiev, Anzhiiak Oleksii
Svitla .Net meetup in Kiev, Anzhiiak OleksiiSvitla .Net meetup in Kiev, Anzhiiak Oleksii
Svitla .Net meetup in Kiev, Anzhiiak OleksiiSvitla Systems Inc.
 

Similar to SE2016 Exotic Elena Morgun "GIL in different programming languages" (20)

Working with .NET Threads
Working with .NET ThreadsWorking with .NET Threads
Working with .NET Threads
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
 
Android - 11 - Multithreading
Android - 11 - MultithreadingAndroid - 11 - Multithreading
Android - 11 - Multithreading
 
Prezentatsia Elina
Prezentatsia ElinaPrezentatsia Elina
Prezentatsia Elina
 
Distributed Systems Presentation for Business informatics students (Staroletov)
Distributed Systems Presentation for Business informatics students (Staroletov)Distributed Systems Presentation for Business informatics students (Staroletov)
Distributed Systems Presentation for Business informatics students (Staroletov)
 
лекция 2
лекция 2лекция 2
лекция 2
 
кластеры и суперкомпьютеры
кластеры и суперкомпьютерыкластеры и суперкомпьютеры
кластеры и суперкомпьютеры
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
 
Aum Cluster
Aum Cluster Aum Cluster
Aum Cluster
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
основы микропроцессорной техники
основы микропроцессорной техникиосновы микропроцессорной техники
основы микропроцессорной техники
 
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
Разработка встраиваемой операционной системы на базе микроядерной архитектуры...
 
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithmsAtomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
036
036036
036
 
ОС в реальном времени
ОС в реальном времениОС в реальном времени
ОС в реальном времени
 
Programming Guide
Programming GuideProgramming Guide
Programming Guide
 
Svitla .Net meetup in Kiev, Anzhiiak Oleksii
Svitla .Net meetup in Kiev, Anzhiiak OleksiiSvitla .Net meetup in Kiev, Anzhiiak Oleksii
Svitla .Net meetup in Kiev, Anzhiiak Oleksii
 
Deep storm presentation
Deep storm presentationDeep storm presentation
Deep storm presentation
 

More from Inhacking

SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"Inhacking
 
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...Inhacking
 
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...Inhacking
 
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...Inhacking
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"Inhacking
 
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"Inhacking
 
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"Inhacking
 
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"Inhacking
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...Inhacking
 
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"Inhacking
 
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...Inhacking
 
SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"Inhacking
 
SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"Inhacking
 
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"Inhacking
 
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"Inhacking
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"Inhacking
 
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"Inhacking
 
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"Inhacking
 
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...Inhacking
 
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...Inhacking
 

More from Inhacking (20)

SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
 
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
 
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
 
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
 
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
 
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
 
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
 
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
 
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
 
SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"
 
SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"
 
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
 
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"
 
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
 
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
SE2016 Java Roman Ugolnikov "Migration and source control for your DB"
 
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...
SE2016 Java Dmytro Panin "JHipster: Create a Spring Boot + AngularJS project ...
 
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
SE2016 Java Dmitriy Kouperman "Working with legacy systems. Stabilization, mo...
 

SE2016 Exotic Elena Morgun "GIL in different programming languages"

  • 2. Многопоточность Многопоточность - возможность процессора или ядра в многоядерной системе выполнять несколько потоков параллельно, а так же - соответствующее свойство платформы, порождающей данные потоки.
  • 4. Поток (thread) Поток - наименьшая единица обработки, исполнение которой может быть назначено ядром ОС. Несколько потоков могут существовать в рамках процесса и совместно использовать его ресурсы.
  • 6. Основные отличия потока от процесса ● Процессы - независимы, потоки существуют, как часть процесса ● Процессы несут больше информации о состоянии, потоки - только информацию, которую передали в поток ● Процессы имеют отдельное адресное пространство и взаимодействуют с помощью специальных механизмов связи между процессами.
  • 7. Потоковая безопасность (thread safety) Код потокобезопасен, если гарантировано функционирует корректно при использовании из нескольких потоков одновременно. Код условно потокобезопасен, если доступ к данным защищен от состояния гонки Код не потокобезопасен, если его работа при использовании из нескольких потоков не гарантирована (и не рекомендована)
  • 9. Что происходит на самом деле
  • 11. Состояние гонки (race condition) Состояние гонки - поведение многопоточного приложения, при котором его работа зависит от того, в каком порядке выполняются части кода.
  • 12. Обеспечение безопасности потока 1. Стиль написания кода, избегающий появления состояний, которые могут изменяться разными потоками. 2. Синхронизация между потоками, если избежать подобных состояний невозможно: a. Мьютексы b. Использование атомарных операций
  • 13. Что такое мьютекс (Mutual Exclusion) Мьютекс - объект взаимного исключения, предназначенный для защиты объекта в потоке от доступа со стороны других потоков. Мьютексы нужны для блокирования критических секций - частей приложения, которые не должны быть исполняемы конкурентно. Когда поток встречает мьютекс, он “закрывает” доступ к данным для других потоков до “освобождения” мьютекса.
  • 14. Что такое атомарная операция Атомарная операция - операция, которую нельзя прервать до ее окончания и кажущаяся для остальной системы моментальной. Атомарность может быть реализована с помощью блокировки. Даже если операция по факту не происходит моментально, другие потоки не могут помешать ее исполнению, пока блокировка не была снята.
  • 15. Чем нам поможет Mutex? На этот раз код вернет корректный результат вне зависимости от используемого интерпретатора.
  • 17. Что такое GIL Global Interpreter Lock - механизм, используемый в некоторых интерпретаторах языков для синхронизации исполнения потоков. В определенный момент времени только один поток может использовать инстанс интерпретатора. Интерпретатор, в котором реализован GIL, позволяет выполнять только один поток в один момент времени, даже в случае запуска на многоядерной системе.
  • 18. Особенности GIL ● Для достижения параллельного исполнения нужно порождать процессы (так как у каждого процесса свой интерпретатор и свой GIL) ● В случае, если приложение запущено в виде одного процесса, увеличение количество процессоров не дает прироста производительности. ● Требуется соответствующая архитектура для скалирования приложения.
  • 19. Плюсы GIL ● Ускорение выполнения кода из-за отсутствия логики блокирования/разблокирования структур данных. ● Ускорение интеграции с не потокобезопасными расширениями на языке C ● Более быстрое написание кода (отсутствие необходимости писать блокировки)