Многопоточность

Здесь описаны операторы и функции для работы с потоками (тип thread).

Операторы

Оператор

Результат

Описание

thread = thread

Оператор присваивания.

Функции

Lock()

Функция Lock блокирует доступ к глобальному ресурсу (мьютексу). Если он уже занят другим потоком, то текущий поток ждет его освобождения. Мьютекс должен быть освобожден с помощью функции Unlock.

resume(thread th)

Функция resume продолжает работу потока, который был остановлен функцией suspend.

sleep(int duration)

Функция sleep останавливает выполнение текущего потока на как минимум duration миллисекунд.

suspend(thread th)

Функция suspend приостанавливает поток th. Используйте функцию resume для продолжения работы потока.

terminate(thread th)

Функция terminate прекращает работу потока. Если поток уже завершен, то функция ничего не делает.

Unlock()

Функция Unlock освобождает доступ к глобальному ресурсу (мьютексу).

wait(thread th)

Функция wait ожидает окончания работы потока th. Если поток уже завершен, то функция ничего не делает.

WaitAll()

Функция WaitAll ожидает когда счётчик WaitGroup станет равен нулю.

run {
int count = 3
WaitGroup(count)
for i in 1..count {
go {
// ...
WaitDone()
}
}
WaitAll()
}

WaitDone()

Функция WaitDone уменьшает счётчик WaitGroup на единицу.

WaitGroup(int count)

Функция WaitGroup создает WaitGroup счётчик потоков, которые должны завершится вызовом функции WaitDone. count - начальное значение счётчика.