• Программа – всё, мечты и желания программиста – ничто.

Класс EV3 Thread (Поток)

http://smallbasic.com/smallbasic.com/img/object_32.pngThread

Класс Thread (Поток) предназначен для организации потоков в программе. Поток представляет собой фрагмент программного кода, который может выполняться независимо и параллельно основной программе. Например, можно создать поток, который будет управлять двигателями в то время как основная программа будет опрашивать датчики или ожидать действий пользователя.

Методы класса Thread:

http://smallbasic.com/smallbasic.com/img/method_16.pngYield

Thread.Yield()

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

http://smallbasic.com/smallbasic.com/img/method_16.pngCreateMutex

Thread.CreateMutex()

Создать мьютекс (сокр. от «mutual exclusion» — взаимное исключение), который может быть использован для синхронизации потоков. Мьютекс может быть только создан, удалить его нельзя. Лучше всего создавать все необходимые мьютексы в начале программы и держать их номера в переменных.

Возвращает: Идентификатор мьютекса, который будет использоваться в дальнейшем для блокировки и разблокировки потоков.

http://smallbasic.com/smallbasic.com/img/method_16.pngLock

Thread.Lock(id)

Пытается заблокировать указанный мьютекс. Установка блокировки мьютекса не позволит никакому другому потоку повторно установить на него блокировку.

id — Идентификатор мьютекса, полученный от метода CreateMutex().

http://smallbasic.com/smallbasic.com/img/method_16.pngUnlock

Thread.Unlock(id)

Снимает блокировку указанного мьютекса. Команду можно использовать только в случае, если блокировка мьютекса действительно была ранее установлена.

id — Идентификатор мьютекса, полученный от метода CreateMutex().

События класса Thread:

http://smallbasic.com/smallbasic.com/img/event_16.pngRun

Thread.Run

Создаёт новый поток. Просто назначьте подпрограмму и она начнет выполняться в качестве независимого потока (пример Thread.Run = MYSUB). Любая подпрограмма может быть запущена как независимый поток, однако, одна подпрограмма может быть запущена как поток только один раз, два потока из неё сделать нельзя. При использовании Thread.Run() в то время, как подпрограмма уже работает, вызов потока поставится в очередь до тех пор, пока она не завершит свою работу. Это обеспечивает корректную работу, но запуск потока может произойти позже запланированного. Все запущенные потоки остановятся, как только основная программа завершит свою работу.


Поделиться: