您的位置:首页 > 其它

Creating a thread VS Forking a thread

2008-01-22 11:21 323 查看
   Thread *t;
char id[2], *name = "t";
int i, NumThreads = 4;
for(i=0;i<NumThreads;i++) {
    sprintf(id,i);
    strcat(name,id);
    t = new Thread(name);
}
•creates 4 threads using the constructor function for the class Thread
•The constructor function simply allocates space for thread and sets its status to JUST_CREATED

•in Nachos, a "main" thread is created as part of system initialization
•the ready list remains empty upon creation of these threads.
•the global variable currentThread always points to the thread currently occupying the CPU
 fork:
Thread *t;
char id[2], *name = "t";
int i, NumThreads = 4;
for(i=0;i<NumThreads;i++) {
    sprintf(id,i);
    strcat(name,id);
    t = new Thread(name);
    t->Fork("somefunction",0);
}
•Fork() allocates a stack for the thread which invokes it, and adds it to the ready list maintained by the scheduler
•StackAllocate() allocates and initializes the execution stack for the thread.
•A C routine ThreadRoot() is called which calls the function "somefunction" and upon its return, calls ThreadFinish().
•now, we have all four threads in the ready list with their status set to READY. currentThread still points to "main".
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息