[NAME] ALL.dao.module.mt [TITLE] Built-in Multi-threading Module [DESCRIPTION] 0.1 Mutex Methods 1 mutex()=>mutex 2 lock( self : mutex ) 3 unlock( self : mutex ) 4 trylock( self : mutex )=>int 5 protect( self : mutex )[] 0.2 Condition Variable Methods 1 condition()=>condition 2 wait( self : condition, mtx : mutex ) 3 timedwait( self : condition, mtx : mutex, seconds :float )=>int 4 signal( self : condition ) 5 broadcast( self : condition ) 0.3 Semaphore Methods 1 semaphore( value = 0 )=>semaphore 2 wait( self : semaphore ) 3 post( self : semaphore ) 4 setvalue( self : semaphore, n :int ) 5 getvalue( self : semaphore )=>int 6 protect( self : semaphore )[] 0.4 Module Methods 1 critical()[] 2 start( when : enum<auto,now> = $auto )[=>@V] =>future<@V> 3 iterate( times :int, threads=2 )[index:int,threadid:int] 4 5 iterate( alist :list<@T>, threads=2 )[item:@T,index:int,threadid:int] 6 map( alist :list<@T>, threads=2 )[item:@T,index:int,threadid:int =>@T2] =>list<@T2> 7 apply( alist :list<@T>, threads=2 )[item:@T,index:int,threadid:int =>@T] =>list<@T> 8 find( alist :list<@T>, threads=2 )[item:@T,index:int,threadid:int =>int] =>tuple<index:int,item:@T>|none 9 10 iterate( amap :map<@K,@V>, threads=2 )[key:@K,value:@V,threadid:int] 11 map( amap :map<@K,@V>, threads=2 )[key:@K,value:@V,threadid:int =>@T] =>list<@T> 12 apply( amap :map<@K,@V>, threads=2 )[key:@K,value:@V,threadid:int =>@V] =>map<@K,@V> 13 find( amap :map<@K,@V>, threads=2 )[key:@K,value:@V,threadid:int =>int] =>tuple<key:@K,value:@V>|none 14 15 iterate( aarray :array<@T>, threads=2 )[item:@T,I:int,J:int,K:int,L:int,M:int,threadid:int] 16 map( aarray :array<@T>, threads=2 )[item:@T,I:int,J:int,K:int,L:int,M:int,threadid:int =>@T2] =>array<@T2> 17 apply( aarray :array<@T>, threads=2 )[item:@T,I:int,J:int,K:int,L:int,M:int,threadid:int =>@T] =>array<@T>