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:输出到指定文件。