home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Programmieren / Kurztests / ACE / Prgs / Misc / Task / task.b < prev    next >
Text File  |  1994-09-09  |  1KB  |  49 lines

  1. {*
  2. ** An example of creating a sub-task in ACE.
  3. ** Adapted from RKM: Libraries (1991), p 467-468
  4. *}
  5.  
  6. DEFLNG a-z
  7.  
  8. CONST stack_size = 1000&
  9. CONST big_num = &H8000000
  10.  
  11. LIBRARY "exec.library"
  12.  
  13. '..library functions
  14. DECLARE FUNCTION xWait(signal&) LIBRARY exec
  15. DECLARE FUNCTION Forbid() LIBRARY exec
  16. DECLARE FUNCTION Permit() LIBRARY exec
  17.  
  18. '..external functions (ami.lib)
  19. DECLARE FUNCTION CreateTask&(taskname$,pri&,initPC&,stackSize&) EXTERNAL
  20. DECLARE FUNCTION DeleteTask(task&) EXTERNAL
  21.  
  22. '..global variables
  23. ADDRESS task
  24.  
  25. '..external variables
  26. EXTERNAL LONGINT sharedvar
  27.  
  28. '..subprograms
  29. SUB simpletask
  30.   while sharedvar < big_num
  31.     ++sharedvar
  32.   wend
  33.   xWait(0)
  34. END SUB
  35.  
  36. '..main
  37. sharedvar = 0
  38. print "Initial value of shared variable:";sharedvar
  39. task = CreateTask("SimpleTask",0&,@simpletask,stack_size)
  40. if task = 0& then STOP
  41. print "A sub-task has been spawned which is currently"
  42. print "incrementing a variable that is shared between"
  43. print "the main task and the sub-task."
  44. input "Press return...",x$
  45. print "The value of the shared variable is now:";sharedvar
  46. Forbid
  47. DeleteTask(task)
  48. Permit
  49.