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

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

Операторы

ОператорРезультатОписание

thread = thread

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

Функции

Lock()

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

resume(thread th)

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

SetThreadData(obj o)

Функция SetThreadData присваивает текущему потоку переменную типа obj. Значение переменной может быть получено функцией ThreadData.

sleep(int duration)

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

suspend(thread th)

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

terminate(thread th)

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

ThreadData() obj

Функция ThreadData возвращает объект, который был присвоен текущему потоку. Переменная типа obj присваивается потоку функцией SetThreadData.

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 - начальное значение счётчика.

Last updated