ConcurrentHashMap 使用示例

import std.collection.* import std.collection.concurrent.* import std.sync.* main() { let threads = 8 let M = 1024 let cmap = ConcurrentHashMap<Int64, Int64>(concurrencyLevel: 64) let jobs = Array<Future<Unit>>(threads, repeat: unsafe { zeroValue<Future<Unit>>() }) for (t in 0..threads) { jobs[t] = spawn { for (i in t..M : threads) { cmap.put(i, i + 3) } } } for (t in 0..threads) { jobs[t].get() } println("Size after put: ${cmap.size}") for (t in 0..threads) { jobs[t] = spawn { for (i in t..M : threads) { cmap.remove(i, {v => v % 2 == 0}) } } } for (t in 0..threads) { jobs[t].get() } println("Size after remove first: ${cmap.size}") for (t in 0..threads) { jobs[t] = spawn { for (i in t..M : threads) { cmap.remove(i) } } } for (t in 0..threads) { jobs[t].get() } println("Size after remove second: ${cmap.size}") }

结果如下:

Size after put: 1024 Size after remove first: 512 Size after remove second: 0