pthread

pthread

 

#include <pthread.h>


void threadRun()
{
    printf("Thread Run ...");
    return;
}

int main() {

    pthread_t pt;
    pthread_create(&pt, NULL, threadRun, NULL);
    
    printf("End");
    return 0;
}

pthread_create方法参数说明:

参数1:新创建的线程ID,指向内存地址;

参数2:线程的属性,默认为NULL

参数3:子线程运行的函数,函数的内存地址

参数4:参数3需要传入的参数,默认为空

 

int main(){
    pthread_t pt;
    pthread_create(&pt, NULL, threadRun, NULL);
    pthread_join(&pt, NULL);
    return 0;
}

pthread_join函数说明:

参数1:等待退出线程的线程号;

参数2:退出线程的返回值,可为空;

该函数会让主线程阻塞,直到对应的子线程都执行完毕后,再接着向下走。

 

int main() {
    pthread_t pt;
        
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(&pt, &attr, threadRun, NULL);
    
    return 0;
}

detach说明:

通过pthread_join()函数来使主线程阻塞等待其他线程退出,这样主线程可以清理其他线程的环境。但是还有一些线程,更喜欢自己来清理退出的状态,他们也不愿意主线程调用pthread_join来等待他们。我们将这一类线程的属性称为detached(分离的)。如果我们在调用 pthread_create()函数的时候将属性设置为NULL,则表明我们希望所创建的线程采用默认的属性,也就是jionable(此时不是detached)。

如果需要将线程的属性设置为detached,则按照上面创建线程的方法即可;

在线程设置joinable之后可以通过函数pthead_detach()将线程转为detached;相反则不行。调用pthread_join()之后调用则无任何效果。

 

    // 获取当前线程的ID
    pthread_self();

    // 将joinable的线程调整为detach
    pthread_detach(pthread_self());

    // 直接结束线程
    pthread_exit(NULL);

    // 结束指定线程
    pthread_cancel(&pt);

上面是常用线程函数

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值