Initialize:
ENTRY
PROCEDURE [sync: Synchronizer,
enableAbort, enableTimeout:
BOOLEAN, lapse: Process.Milliseconds ← maximumLapse] =
TRUSTED
INLINE
BEGIN
ENABLE UNWIND => NULL;
IF enableAbort
THEN Process.EnableAborts[pCondition: @sync.condition]
ELSE Process.DisableAborts[pCondition: @sync.condition];
IF enableTimeout
THEN Process.SetTimeout[condition: @sync.condition, ticks: Process.MsecToTicks[lapse]]
ELSE Process.DisableTimeout[condition: @sync.condition];
sync.count ← 0;
END;