在liunx中使用pthread_create创建不同功能线程

题目

       在Ubuntu环境使用pthread_create函数创建两个线程A和B.线程A在屏幕上用while循环顺序递增的输出1-1000的自然数,线程B在屏幕上用while循环顺序递减的输出1000-1自然然数,为避免输出太快,没隔1s输出一个树。

思路

       Linux中可以用pthead.h库中的pthread_create函数创建不同功能的线程(区别与fork()函数)。先编写函数A和B实现自己的功能,再到主线程main()中创建两个进程。

代码

#include"stdio.h"

#include"unistd.h"

#include"pthread.h"

#include"stdlib.h"

void * a();

void * b();

int main(){

pthread_t t1,t2;

pthread_create(&t1,NULL,a,NULL);

pthread_create(&t2,NULL,b,NULL);

printf("this main thread\n");

pthread_exit(NULL);                                                     

}

void * a(void *arg){

int i;

for(i=0;i<=1000;i++){

printf("%d\n",i);

sleep(1);

}

return NULL;

}

void * b(void *arg){

int i;

for(i=1000;i>=0;i--){

printf("%d\n",i);

sleep(1);

}

return NULL;

}

总结

1.pthread_create在pthread.h库中,它的函数原型为int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,void *(*start_rtn)(void*),void *arg);

返回值0,则创建成功,返回值为-1创建失败。从左到右四个参数分别为指向线程标识符的指针,设置线程属性,线程运行函数的起始地址,运行函数的参数.

2.由于linux库中没有pthread.h,编译要加参数-lpthread

3.sleepint s)函数在unistd.h中,功能时线程处于就绪状态s秒。

4.在主线程中需要使用pthread_exit(NULL)等待其他线程运行结束,否则主线程直接返回。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值