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的顺序,即可不死锁