5233杨光--家庭作业

8.18(2分)

由进程图可得 112002   102120  100212是可能的  所以为ACE

 

8.19(2分)

 由于fork函数调用一次返回两次,所以总共会输出2^n行

 

 

 

12.16(1分)

#include "csapp.h"
void *thread(void *vargp);

int main()
{
int n;
int i;
printf("please enter the number what you want creat:");
scanf("%d",&n);
pthread_t tid[n];
for(i=0;i<n;i++);
{
Pthread_creat(&tid[i],NULL,thread,NULL);
Pthread_join(tid[i],NULL);
}
exit(0);
}

void *thread(void *vargp)
{
printf("Hello world!\n");
return NULL;
}

 

12.17(1分)

A.在程序睡眠的时候,主函数已经exit了

B.用pthread_exit函数,它会等待所有其他线程终止后,再终止主线程和整个进程。

 

12.30(2分)

a=1 b=1 c=1
   1      2       3
a加锁 c加锁 c加锁
b加锁 b加锁 c解锁
b解锁 b解锁 b加锁
c加锁 c解锁 a解锁
c解锁 a加锁 a解锁
a解锁 a解锁 b解锁

A:(a,b,c)

B:线程1出错

C:先加锁a再加锁b再加锁c的顺序,即可不死锁

 

posted @ 2015-11-25 22:59  Mccartney  阅读(221)  评论(0编辑  收藏  举报