linux进程线程管理实验报告(9)
时间:2025-07-09
时间:2025-07-09
进程线程,死锁实验报告
pthread_mutex_unlock(&mutex2);
pthread_mutex_unlock(&mutex1);
}
}
void critical_section(int thread_num,int i){
printf("Thread%d:%d\n",thread_num,i);
}
1. 你预想deadlock.c 的运行结果会如何?
2. deadlock.c 的实际运行结果如何?多次运行每次的现象都一样吗?为什么会这样?
四、实验结果
4.1 通过加锁可修改thread.c程序,使得main_counter与sum值同步,源代码如下:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<ctype.h>
#include<pthread.h>
#define MAX_THREAD 3
unsigned long long main_counter,counter[MAX_THREAD];
void* thread_worker(void*);
int main(int argc,char argv[]){
int i,rtn;
char ch;
pthread_t pthread_id[MAX_THREAD]={0};
for(i=0;i<MAX_THREAD;i++){
pthread_create(&pthread_id[i],NULL,thread_worker,(void*)i);
}
do{
unsigned long long sum=0;
for(i=0;i<MAX_THREAD;i++){
sum+=counter[i];
printf("counter[%d]=%llu\n",i,counter[i]);
}
printf("main_counter=%llu/sum=%llu\n",main_counter,sum);
}while((ch=getchar())!='q');
return 0;
}
上一篇:数学教案第一周