Print

Print


  > Each of the key entities in this subsystem has two tasks
  > associated with it, one to manage access/update and the
  > other to move it down its timeline. Since there can be 128
  > of these entities that means 256 tasks, and with a
  > bunch of "utility tasks" results in a process have 300-350 tasks.
  >
  > Our experience with tasking in this subsystem has been very positive, most
  > of the tasks are dormant at any given time, resulting in
  > very low CPU utilization.
  > In addition, since each pair of tasks has no interaction
  > with other pairs, the complexity is quite low.  And, in fact, the
  > abstraction of the problem domain closely matches tasking
  > semantics and capabilities.

First, please submit a paper at this year's Tri-Ada giving the
tasking organization of your product and timing metrics and
a timing chart. This is great stuff.

Second, if you could produce a public version of your code
(by deleting almost everything except the tasking shells),
it would be great to use it as an exercise to convert it
to Ada-95 protected records. An actually used tasking structure,
especially one like this matches Dr. James' cascading matrix
of Secretary-Protected-Records which administer the active
Protected-Records on either side of them. I have been waiting
for exactly such an example as yours to program as a
cascading matrix of protected records.

Third, although you are in Ada-83, most Ada-95 compilers have
Ada-83 parser options, so this could be simulated in DOS.
Also, most Ada-83 compilation units compile unchanged in Ada-95.
It would also be interesting to know if a conversion from your
tasking structure to protected records could be done
incrementally. Perhaps one pair of tasks at a time converting
to a pair of protected records? It would depend on how many
inter-task connections there are. Is it 1-dimensional?
2-dimensional?