Skip to content

std.concurrent ​

並行処理支援モジュール。

yaoxiang
use std.concurrent

本モジュールはオペレーティングシステムのスレッドに依存しており、wasm32 ターゲットではエクスポートされません。

関数一覧 ​

関数シグネチャ
sleep(millis: Int) -> Void
thread_id() -> String
yield_now() -> Void

関数 ​

sleep ​

yaoxiang
sleep: (millis: Int) -> Void

現在のスレッドを指定されたミリ秒数ブロックします。

  • millis —— スリープするミリ秒数。非 Int または欠落時は 0 として扱われます(エラーは発生しません)

単位に関する注意:std.time.sleep は秒単位で小数を許容しますが、本関数はミリ秒単位です。concurrent.sleep(1) は 1 ミリ秒スリープし、 time.sleep(1) は 1 秒スリープします。

yaoxiang
use std.concurrent

main: () -> Void = {
    concurrent.sleep(0)
    concurrent.sleep(1)
}

thread_id ​

yaoxiang
thread_id: () -> String

現在のスレッドの識別子文字列を返します。

戻り値:ThreadId(1) 形式の文字列。具体的な値はプラットフォームやスケジューリングによって変化するため、存在チェックのみに使用し、その具体的な内容や形式には依存しないでください。

yaoxiang
use std.assert
use std.concurrent
use std.string

main: () -> Void = {
    tid = concurrent.thread_id()
    assert(string.len(tid) > 0)
}

yield_now ​

yaoxiang
yield_now: () -> Void

現在のスレッドのスケジューリング・タイムスライスを自発的に譲り、他のスレッドに実行の機会を与えます。

yaoxiang
use std.concurrent

main: () -> Void = {
    concurrent.yield_now()
}

関連 ​