设为首页 加入收藏

TOP

关于pthread_join函数与Linux线程(ref)
2014-11-24 01:22:53 来源: 作者: 【 】 浏览:3
Tags:关于 pthread_join 函数 Linux 线程 ref

pthread_join使一个线程等待另一个线程结束。


代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。


所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。


下面说一下如何创建一个线程。


通过创建线程,线程将会执行一个线程函数,该线程格式必须按照下面来声明:


void * Thread_Function(void *)


创建线程的函数如下:


int pthread_create(pthread_t *restrict thread,


const pthread_attr_t *restrict attr,


void *(*start_routine)(void*), void *restrict arg);


下面说明一下各个参数的含义:


thread:所创建的线程号。


attr:所创建的线程属性,这个将在后面详细说明。


start_routine:即将运行的线程函数。


art:传递给线程函数的参数。


下面是一个简单的创建线程例子:


#include


#include


void* print_xs (void* unused)


{


while (1)


fputc (‘x’, stderr);


return NULL;


}


int main ()


{


pthread_t thread_id;


pthread_create (&thread_id, NULL, &print_xs, NULL);


while (1)


fputc (‘o’, stderr);


return 0;


}


在编译的时候需要注意,由于线程创建函数在libpthread.so库中,所以在编译命令中需要将该库导入。命令如下:


gcc –o createthread –lpthread createthread.c


如果想传递参数给线程函数,可以通过其参数arg,其类型是void *。如果你需要传递多个参数的话,可以考虑将这些参数组成一个结构体来传递。另外,由于类型是void *,所以你的参数不可以被提前释放掉。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java语言学习细节之构造方法调用.. 下一篇Java基础知识:Java实现抽取网页..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: