os实验--线程的创建 - webdancer's Blog
os实验--线程的创建
Linux 利用了特有的内核函数__clone 实现了一个叫 phread 的线程库,__clone是 fork 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。Pthread 是一个标准化模型,用它可把一个程序分成一组能够并发执行的多个任务。phread 线程库是 POSIX 线程标准的实现,它提供了 C 函数的线程调用接口和数据结构。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<pthread.h>
int tjobs0(int );
int tjobs1(int );
pthread_t thr0,thr1;
int num0,num1;
int main(int argc,char * argv[]){
int result;
int ret0,ret1;
int x,y;
printf("input the x and y\n");
printf("input x: ");
scanf("%d",&x);
printf("input y: ");
scanf("%d",&y);
ret0=pthread_create(&thr0,NULL,(void*)tjobs0,(void * )x);
if(ret0<0){
perror("error!");
exit(0);
}
ret1=pthread_create(&thr1,NULL,(void *)tjobs1,(void *)y);
if(ret1<0){
perror("error!");
exit(0);
}
pthread_join(thr0,NULL);
pthread_join(thr1,NULL);
result=num0+num1;
printf("the result is %d\n",result);
return 0;
}
int tjobs0(int i){
if(i==1)
num0=1;
else if(i>1){
num0=tjobs0(i-1)*i;
i--;
}
return num0;
}
int tjobs1(int j){
if(j==1||j==2)
num1=1;
else if(j>2){
num1=tjobs1(j-1)+tjobs1(j-2);
j--;
}
return num1;
}
gcc :gcc是GNU计划的c /c++的编译器。
gcc的用法(详细:info gcc ):
-E: 预处理。
-S:z只编译,不汇编,生成汇编代码。
-c:编译或者汇编,但不链接。
-o:输出到指定文件。
评论 (0)