Linux应用开发之线程

这一节我们来学习一下线程,首先来看一下线程创建函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void (start_routine) (void ), void arg);
第一个参数
thread:这个参数保存的是创建了的线程的ID号
第二个参数
attr:这个参数是线程的属性,一般设为NULL,使用默认的属性
第三个参数void
arg:这个是线程要处理的函数。
第四个参数void
arg:这个是要传给函数的参数。
下面来看一下线程回收函数:
int pthread_join(pthread_t thread, void **retval)
第一个参数是要回收的线程号,第二个参数保存线程返回的值。
int pthread_detach(pthread_t thread)
这个函数和pthread_join互斥使用,这个是设置线程为分离态,运行结束后系统回收。
线程退出要调用pthread_exit()函数,任何线程调用_exit()函数都会使主线程退出
下面用一个例子来演示一下这个函数的使用方法

#include<pthread.h>
#include<string.h>
#include<stdio.h>
//线程1处理函数
void *pth1()
{
        printf("I am pthread 1\n");
        pthread_exit((void*)0);
}
//线程2处理函数
void *pth2(void*arg)
{
        pthread_detach((pthread_t)arg);//把线程设为分离态,就不用调用pthread_join()
        printf("I am pthread 2\n");
        pthread_exit((void*)1);
}

int main()
{
        pthread_t pid[2];
        pthread_create(&pid[0],NULL,pth1,NULL);//创建线程
        pthread_create(&pid[1],NULL,pth2,(void*)pid[1]);
        pthread_join(pid[0],NULL);//阻塞函数,等待线程退出
        return 0;
}

编译时要加上-lpthread来调用系统的库
运行结果为:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值