Added cons.
[mozart2.git] / threads.hh
blob40de7c682a2e7ca8961fec19cc9cd385f09ad1b3
1 struct ThreadList{
2 UnstableNode thread;
3 ThreadList* next;
4 };
5 class ThreadPool{
6 private:
7 ThreadList* front;
8 ThreadList** back;
9 public:
10 ThreadPool():front(0),back(&front){}
11 void get(VM &vm, UnstableNode& dest);
12 void schedule(VM &vm, UnstableNode& t);
13 void gc(GC& gc);
15 class Thread{
16 StackFrameHeader* topOfStack;
17 friend StackFrameHeader*& getStackTop(Node& it);
18 public:
19 Thread():topOfStack(0){}
21 extern const VTable threadVT;
22 void mkThread(VM &vm,Node &target){
23 target.vt=&threadVT;
24 target.c.ptr=new(vm)Thread();