west@calgary.UUCP (Darrin West) (05/13/86)
We have Release E - November 1984. (this may be the problem). Anyway, I've been trying for several days now to get a fairly simple tasking system to work. Very simple systems are fine (maybe). eg: start one task from main, doing some printing and delays. However, when I try the following program, the constructor for "dumb2" seems to be run twice. After using "print(VERBOSE|CHAIN)" I discovered that sometimes (I don't remember under which conditions) the task or ready to run queues get fouled up too. Notice that I am using a derived class for "dumb2". When I change it to a task class directly things seem to work better. --- #include <task.h> class dumb : public task{ public: dumb(char *); }; dumb.dumb(char *n) : (n,0,0) { printf("in dumb %s\n",n); } class dumb2 : public dumb{ public: dumb2(char *); }; dumb2.dumb2(char *n) : (n) { printf("in dumb2 %s\n",n); delay(1); printf("after delay in dumb2\n"); resultis(5); } main() { dumb2 *p; p = new dumb2("p"); printf("back in main\n"); thistask->delay(3); printf("after delay in main\n"); printf("result %d\n",p->result()); } --- This gives the following output: in dumb p in dumb2 p in dumb2 p ***** task_error(11) schedule: running thistask: task main (is thistask): this==29828 mode=DEDICATED alert=29700 next=29700 result=0 stack: max=750 current=36 t_base=2147477784, t_frame=2147477748, t_size=0 run_chain: task p (RUNNING): --- Any help, including rude comments about misunderstanding the tasking system, would be appreciated. If there were fixes made to Release E that corrected this problem a hint as to where to get them would also be helpful. Darrin West west@calgary.UUCP It might be getting brighter OUTside.