std.concurrent
Вспомогательный модуль для параллелизма.
use std.concurrentЭтот модуль зависит от потоков ОС и не экспортируется на целевой платформе
wasm32.
Обзор функций
| Функция | Сигнатура |
|---|---|
sleep | (millis: Int) -> Void |
thread_id | () -> String |
yield_now | () -> Void |
Функции
sleep
sleep: (millis: Int) -> VoidБлокирует текущий поток на указанное количество миллисекунд.
millis— количество миллисекунд сна; если значение неIntили отсутствует, обрабатывается как0(без ошибки)
Внимание к единицам измерения:
std.time.sleepработает с секундами и принимает дробные значения, тогда как данная функция работает с миллисекундами.concurrent.sleep(1)усыпляет на 1 миллисекунду,time.sleep(1)усыпляет на 1 секунду.
use std.concurrent
main: () -> Void = {
concurrent.sleep(0)
concurrent.sleep(1)
}thread_id
thread_id: () -> StringВозвращает строку-идентификатор текущего потока.
Возвращает: строку вида ThreadId(1). Конкретное значение зависит от платформы и планировщика, поэтому следует использовать только для проверки наличия, не полагаясь на конкретное содержимое или формат.
use std.assert
use std.concurrent
use std.string
main: () -> Void = {
tid = concurrent.thread_id()
assert(string.len(tid) > 0)
}yield_now
yield_now: () -> VoidДобровольно уступает квант времени планировщика текущего потока, предоставляя возможность выполнения другим потокам.
use std.concurrent
main: () -> Void = {
concurrent.yield_now()
}Связанные материалы
std.time.sleep— посекундный сон- Спецификация языка: модель параллелизма —
spawnи семантика spawn
