Juce: многопоточность
Содержание:
1. Введение;
2. Контейнеры;
3.Многопоточность (Вы читаете данный раздел);
4. Проекты, использующие Juce;
5. Впечатления и выводы.
Многопоточность в Juce реализуется классом Thread. Как и во многих других тулкитах, это полностью виртуальный класс, наследуя который можно создавать свои нити. В унаследованном классе нужно реализовать метод run(), являющийся «телом» нити. Реализация нитей достаточно стандартна и понятна любому, кто хоть раз сталкивался с этой концепцией в других тулкитах и библиотеках.
Сильной стороной многопоточности в Juce является кроссплатформенная реализация «спящего режима» нитей. Выполнение нити можно приостановить вызовом wait() и возобновить вызовом notify().
Доступ к компонентам GUI в Juce имеет только та нить, в которой они были созданы. Чтобы получить доступ к GUI из других нитей, нужно использовать класс MessageManagerLock. Наличие объекта этого класса блокирует обработку событий GUI в основной нити на время его существования.
Как только этот объект разрушается, обработка событий возобновляется. Пример использования такой блокировки имеется в документации (http://www.rawmaterialsoftware.com/juce/api/classMessageManagerLock.html#details). Имеются также обычные объекты синхронизации. Класс CriticalSection позволяет коду, расположенному между вызовами CriticalSection::enter и CriticalSection::exit, выполняться только одной нитью, которая блокирует секцию.
Класс ScopedLockпозволяет автоматически блокировать критические секции при создании экземпляра этого класса и освобождать их при его уничтожении. Класс InterProcessLock имеет функциональность схожую с мьютексами в других тулкитах.
Все свое свободное время уделяете своему ребенку и на работу с Juce у Вас совершенно нет времени? Что ж, тогда Вам определенно точно следует купить слинг шарф (http://sovr-mama.ru/category/sling-sharf/)! Это незаменимый элемент гардероба любой мамы, который позволит Вам носить своего ребенка на груди и выглядеть при этом невероятно стильно!
1. Введение;
2. Контейнеры;
3.
4. Проекты, использующие Juce;
5. Впечатления и выводы.
Многопоточность в Juce реализуется классом Thread. Как и во многих других тулкитах, это полностью виртуальный класс, наследуя который можно создавать свои нити. В унаследованном классе нужно реализовать метод run(), являющийся «телом» нити. Реализация нитей достаточно стандартна и понятна любому, кто хоть раз сталкивался с этой концепцией в других тулкитах и библиотеках.
Сильной стороной многопоточности в Juce является кроссплатформенная реализация «спящего режима» нитей. Выполнение нити можно приостановить вызовом wait() и возобновить вызовом notify().
Доступ к компонентам GUI в Juce имеет только та нить, в которой они были созданы. Чтобы получить доступ к GUI из других нитей, нужно использовать класс MessageManagerLock. Наличие объекта этого класса блокирует обработку событий GUI в основной нити на время его существования.
Как только этот объект разрушается, обработка событий возобновляется. Пример использования такой блокировки имеется в документации (http://www.rawmaterialsoftware.com/juce/api/classMessageManagerLock.html#details). Имеются также обычные объекты синхронизации. Класс CriticalSection позволяет коду, расположенному между вызовами CriticalSection::enter и CriticalSection::exit, выполняться только одной нитью, которая блокирует секцию.
Класс ScopedLockпозволяет автоматически блокировать критические секции при создании экземпляра этого класса и освобождать их при его уничтожении. Класс InterProcessLock имеет функциональность схожую с мьютексами в других тулкитах.
Все свое свободное время уделяете своему ребенку и на работу с Juce у Вас совершенно нет времени? Что ж, тогда Вам определенно точно следует купить слинг шарф (http://sovr-mama.ru/category/sling-sharf/)! Это незаменимый элемент гардероба любой мамы, который позволит Вам носить своего ребенка на груди и выглядеть при этом невероятно стильно!