Skip to content

Instantly share code, notes, and snippets.

@MarkGoldberg
Created September 6, 2017 17:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MarkGoldberg/45c58d161c0424d33572215c7e60837d to your computer and use it in GitHub Desktop.
Save MarkGoldberg/45c58d161c0424d33572215c7e60837d to your computer and use it in GitHub Desktop.
Clarion ThreadMonitor class - used to Notify a thread as each thread starts and ends
MEMBER
MAP
END
INCLUDE('ThreadMonitor.inc'),ONCE
eqDBG EQUATE('<4,2,7>')
MOD:ConstructEvent SIGNED
MOD:DestructEvent SIGNED
MOD:ThreadToInform SIGNED
!ThreadMonitor.InitOnce PROCEDURE(SIGNED xConstructEvent, SIGNED xDestructEvent, ThreadType xThreadToInform)
! CODE
! MOD:ConstructEvent = xConstructEvent
! MOD:DestructEvent = xDestructEvent
! MOD:ThreadToInform = xThreadToInform
ThreadMonitor.ConstructEvent PROCEDURE(SIGNED xNewValue)
CODE
MOD:ConstructEvent = xNewValue
ThreadMonitor.ConstructEvent PROCEDURE()!,SIGNED
CODE
RETURN MOD:ConstructEvent
ThreadMonitor.DestructEvent PROCEDURE(SIGNED xNewValue)
CODE
MOD:DestructEvent = xNewValue
ThreadMonitor.DestructEvent PROCEDURE()!,SIGNED
CODE
RETURN MOD:DestructEvent
ThreadMonitor.ThreadToInform PROCEDURE(SIGNED xNewValue)
CODE
MOD:ThreadToInform = xNewValue
ThreadMonitor.ThreadToInform PROCEDURE()!,SIGNED
CODE
RETURN MOD:ThreadToInform
ThreadMonitor.CONSTRUCT PROCEDURE
CODE
!Assert(0,eqDBG&'ThreadMonitor.CONTRUCT THREAD()['& THREAD() &'] Mod:ConstructEvent['& Mod:ConstructEvent &'] Mod:ThreadToInform['& Mod:ThreadToInform &']')
IF Mod:ConstructEvent AND Mod:ThreadToInform
NOTIFY(Mod:ConstructEvent, Mod:ThreadToInform, THREAD() )
END
ThreadMonitor.DESTRUCT PROCEDURE
CODE
!Assert(0,eqDBG&'ThreadMonitor.DESTRUCT THREAD()['& THREAD() &'] Mod:DestructEvent['& Mod:DestructEvent &'] Mod:ThreadToInform['& Mod:ThreadToInform &']')
IF Mod:DestructEvent AND Mod:ThreadToInform
NOTIFY(Mod:DestructEvent, Mod:ThreadToInform, THREAD() )
END
ThreadMonitor CLASS,THREAD,MODULE('ThreadMonitor.clw'),LINK('ThreadMonitor.clw') ! <--- INSTANCE CLASS, that is THREADed
ConstructEvent PROCEDURE(SIGNED xNewValue)
ConstructEvent PROCEDURE(),SIGNED
DestructEvent PROCEDURE(SIGNED xNewValue)
DestructEvent PROCEDURE(),SIGNED
ThreadToInform PROCEDURE(SIGNED xNewValue)
ThreadToInform PROCEDURE(),SIGNED
CONSTRUCT PROCEDURE
DESTRUCT PROCEDURE
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment