> 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?