Skip to content

ConcurrentLinkedQueue 使用示例

示例:

__

import std.collection.*
import std.collection.concurrent.*
import std.sync.*

main() {
    let threads = 8
    let total: Int64 = 128
    let bq = ConcurrentLinkedQueue\<Int64\>(Array\<Int64\>(total, {i => i}))
    println("Total ${bq.size} after init")
    let jobs = Array<Future\<Unit\>>(threads, repeat: unsafe { zeroValue<Future\<Unit\>>() })
    for (t in 0..threads) {
        jobs[t] = spawn {
            for (i in t..total : threads) {
                bq.dequeue()
            }
        }
    }

    for (t in 0..threads) {
        jobs[t].get()
    }
    println("Total ${bq.size} after dequeue")
}

运行结果:

__

Total 128 after init
Total 0 after dequeue

基于 VitePress 构建的仓颉文档