Property definitions

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

	redef type REAL: List[E]

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

	redef fun link(l)
	do
		mutex.lock
		real_collection.link(l)
		mutex.unlock
	end

	redef fun slice(from, to)
	do
		mutex.lock
		var r = real_collection.slice(from, to)
		mutex.unlock
		return r
	end

	#
	## The following method defs are conflict resolutions
	#

	redef fun pop
	do
		mutex.lock
		var r = real_collection.pop
		mutex.unlock
		return r
	end

	redef fun is_empty
	do
		mutex.lock
		var r = real_collection.is_empty
		mutex.unlock
		return r
	end

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

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

	redef fun shift
	do
		mutex.lock
		var value = real_collection.shift
		mutex.unlock
		return value
	end
end
lib/pthreads/concurrent_collections.nit:452,1--518,3