Property definitions

pthreads $ ThreadPool :: defaultinit
# A simple ThreadPool implemented with an array
class ThreadPool
	private var queue = new ConcurrentList[Task]
	private var mutex = new Mutex
	private var cond = new NativePthreadCond
	private var threads = new Array[PoolThread]

	# Number of threads used, can only grow after the first call to `execute`
	var nb_threads = 5 is optional, writable

	private fun create_threads do
		while threads.length < nb_threads do
			var t = new PoolThread(queue, mutex, cond)
			t.start
			threads.add t
		end
	end

	# Adds a Task into the queue
	fun execute(task: Task) do
		create_threads
		queue.push(task)
		cond.signal
	end

	# Join all threads, waiting for all tasks to be completed
	fun join_all do
		# Wait
		for t in threads do t.join

		# Reset
		threads.clear
	end
end
lib/pthreads/threadpool.nit:21,1--54,3