Multiple CPUs
the initial implementation of the threaded version of S does not admit use of multiple processors. This will be changed in the near future but requires tedious modification of much of the code but simplification of the current thread implementation. Namely, we won't override the context switch code to swap the evaluator object into the global variable accessed by many of the routines in S.
Multiple Threads Joining on a Thread
In Pthreads, a thread can join on another thread, meaning that the first thread blocks waiting until the joined thread terminates. Only one thread can join on another. In our versions, multiple threads can join on the same thread. We have to figure out a mechanism to release the cached return value from the Evaluator Manager when it is no longer needed.
This thread is not a user level created thread but generated by the S engine at initialization.
Daemon access conflict
There is a conflict for Daemon like threads here. Each thread needs access to the Daemon's task queue but we don't want the return value cached. This shouldn't be a problem as we can add elements to the access list and also a Daemon should run throughout the life of the session or be terminated infreqently so that caching the return value is not a significant penalty.
Imaginary Histogram Function
Hist() would be a function that takes a bin width and number of bins (a bit odd!) and draws the resulting histogram. It also takes the name of a device, so that we don't have to lock the current device but instead can use a local device and send the instructions directly to it. Of course, in our implementation, we do because the old graphics code uses global variables.
Callback Categorization

Last modified: Fri Feb 28 09:56:34 1997