declare class TupleSpace prop locking attr tupledict meth init tupledict:={NewDictionary} end meth EnsurePresent(L) if {Not {Dictionary.member @tupledict L}} then @tupledict.L:={NewQueue} end end meth Cleanup(L) if {@tupledict.L.size}==0 then {Dictionary.remove @tupledict L} end end meth write(Tuple) lock L={Label Tuple} in {self EnsurePresent(L)} {@tupledict.L.insert Tuple} end end meth read(L ?Tuple) lock {self EnsurePresent(L)} {@tupledict.L.delete Tuple} {self Cleanup(L)} end {Wait Tuple} end meth readnonblock(L ?Tuple ?B) lock {self EnsurePresent(L)} if {@tupledict.L.size}>0 then {@tupledict.L.delete Tuple} B=true else B=false end {self Cleanup(L)} end end end