NonBlockingQueue 使用示例

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

main() {
    let threads = 8
    let total: Int64 = 128
    let bq = NonBlockingQueue<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