Property definitions

pthreads $ ConcurrentArray :: defaultinit
# A concurrent variant to the standard `Array`
class ConcurrentArray[E]
	super ConcurrentSequence[E]
	super Array[E]

	redef type REAL: Array[E]

	init wrap(real_collection: REAL) do self.real_collection = real_collection
	init do self.real_collection = new Array[E]

	redef fun clear
	do
		mutex.lock
		real_collection.clear
		mutex.unlock
	end

	redef fun enlarge(cap)
	do
		mutex.lock
		real_collection.enlarge(cap)
		mutex.unlock
	end

	redef fun remove_all(e)
	do
		mutex.lock
		real_collection.remove_all(e)
		mutex.unlock
	end

	redef fun swap_at(a, b)
	do
		mutex.lock
		real_collection.swap_at(a, b)
		mutex.unlock
	end

	redef fun has(e)
	do
		mutex.lock
		var result = real_collection.has(e)
		mutex.unlock
		return result
	end

	#
	## The following method defs are conflict resolutions
	#

	redef fun add(e)
	do
		mutex.lock
		real_collection.add e
		mutex.unlock
	end

	redef fun length
	do
		mutex.lock
		var r = real_collection.length
		mutex.unlock
		return r
	end
end
lib/pthreads/concurrent_collections.nit:386,1--450,3