# 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