Linux多线程函数pthread_create()函数

函数原型:

#include

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
#include

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
#include
#include
#include
#include
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)







你可能感兴趣的:(c/c++,linux)