Linux多线程函数pthread_create()函数

8 篇文章 0 订阅

函数原型:

#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

4个参数:

第一个参数:指向线程标示符pthread_t的指针;

第二个参数:设置线程的属性

第三个参数:线程运行函数的起始地址

第四个参数:运行函数的参数
pthreadTest.c

通过pthread_self()获取当前线程的ID

#include<stdio.h>
#include<pthread.h>

void *print_pthread_id(void *arg)
{
        printf("current thread id is %u\n",(unsigned)pthread_self());
}

int main(int argc, char * argv[])
{

        pthread_t thread;

        pthread_create(&thread,NULL,print_pthread_id,NULL);

        sleep(1);

        printf("main thread id is %u\n",(unsigned)pthread_self());

        return 0;
}
编译时必须加-lpthread,

运行结果:

current thread id is 2279393024
main thread id is 2287691520

pthreadTest1.c

#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
pthread_t t_id;
void printf_tid_pid(const char *s)
{
        pid_t pid;
        pthread_t tid;
        pid = getpid();
        tid = pthread_self();
        printf("%s pid %u tid %u (0x%x)\n",s,(unsigned)pid,(unsigned)tid,(unsigned)tid);
}

void *thread_fuction(void *arg)
{
        printf_tid_pid("new thread: ");
        return ((void*)0);
}
int main(int argc,int argv)
{
        int err;
        err = pthread_create(&t_id,NULL,thread_fuction,NULL);
        if(err != 0 )
        {
                printf("create thread fail: %s\n",strerror(err));
        }
        printf_tid_pid("main thread");
        sleep(1);
        return 0;
}

 gcc -o pthreadTest1 pthreadTest1.c -lpthread

 ./pthreadTest1
main thread pid 10437 tid 3091662592 (0xb8470700)
new thread:  pid 10437 tid 3083364096 (0xb7c86700)







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值