os实验--线程的创建 - webdancer's Blog

os实验--线程的创建

webdancer posted @ 2010年4月14日 00:24 in 工具 with tags OS , 1144 阅读

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

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee