pthreads :: concurrent_collections
Introduces thread-safe concurrent collectionscore :: union_find
union–find algorithm using an efficient disjoint-set data structure
# Simple example of joinable task using threadpool
module jointask_example is example
import threadpool
# Task computing a string
class StringTask
super JoinTask
# Sleeping time
var sec: Int
# result of `self` execution
var value: String
# ID for printing
var id: Int
redef fun main do
nanosleep(sec, 0)
value += " id: {id}"
end
end
var tp = new ThreadPool
var t0 = new StringTask(10, "First, long task", 0)
var tasks = new Array[StringTask]
for i in 5.times do
tasks.add(new StringTask(1, "Small task", i + 1))
end
tp.execute(t0)
for t in tasks do tp.execute(t)
for t in tasks do
t.join
print t.value
end
t0.join
print t0.value
lib/pthreads/examples/jointask_example.nit:15,1--52,14