<<>> <> <> <> <> WorkerThreads: CEDAR DEFINITIONS = { <> <<>> <> <<>> <> <> <> <> <> <> <<>> <> <> Pool: TYPE = REF PoolRep; <> PoolRep: PRIVATE TYPE; IsPool: PROC [x: REF] RETURNS [BOOL]; NarrowPool: PROC [x: REF] RETURNS [Pool]; CreatePool: PROC [percentage: INT ¬ 4, initialPriority: CARD32 ¬ 2] RETURNS [Pool]; <> <> <> Activity: TYPE = REF ActivityRep; ActivityRep: PRIVATE TYPE; IsActivity: PROC [x: REF] RETURNS [BOOL]; NarrowActivity: PROC [x: REF] RETURNS [Activity]; Fork: PROC [pool: Pool, proc: PROC[REF], data: REF ¬ NIL, promiseToPerform: BOOL ¬ FALSE] RETURNS [Activity]; <> <> <> <> <<>> ActivityState: TYPE = {queued, busy, finished, discarded, aborting, aborted}; <> < {busy, discarded, finished, aborting, aborted}>> < {finished, aborting, aborted}>> < aborted>> <> State: PROC [activity: Activity] RETURNS [ActivityState]; <> <<>> Perform: PROC [activity: Activity]; <> <> <> <<>> Discard: PROC [activity: Activity]; <> <<>> Abort: PROC [activity: Activity]; <> <> <<>> Wait: PROC [activities: LIST OF Activity, perform: BOOL ¬ TRUE]; <> <> <<>> AvailableCnt: PROC [pool: Pool] RETURNS [INT]; <> <<>> PeekActivity: PROC [pool: Pool] RETURNS [activity: Activity]; <> <> <<>> }.