标签:
apue第十一章、十二章详细介绍线程。
关于线程的头文件:
#include <pthread.h>
关于线程的函数:
pthread_self() , //获取自己的线程ID
pthread_create(), //创建新线程,参数自己去翻
pthread_exit(), //结束线程
pthread_join(), //等待某个线程的结束,阻塞模式,当被等待的线程调用pthread_exit()时,此函数才返回。
函数原型:extern int pthread_join __P ((pthread_t __th, void **__thread_return));
注意:第一个参数为被等待的线程ID,第二个参数将返回被等待的线程执行pthread_exit((void* arg))时的参数arg,然后被等待的线程执行了pthread_exit()后,就会释放该线程的所有资源,所以该变量不能为被等待线程的局部变量,不然会内存越界。详见下面例子。
注意:pthread_create()有可能在g++下编译不过,需要带上线程的一个编译库文件,比如: g++ hello.cpp -lpthread
如果在codeblocks上需要添加链接库:
Settings->Global compiler settings->Linker settings->add.....
线程库文件一般在/usr/lib/libpthread.so , 如果没有就查找下:find / -name ‘libpthr*‘
如果查找不到就用root账户:apt-get install libpthread(名字可能不对)
类型:
进程的类型是pid_t , int
线程的类型是pthread_t , unsigned long int
线程终止:
详见apue第十一章,
如果进程中任意一个线程调用了exit,_Exit,_exit该进程就会终止~!!!
单个线程终止有三种方法:
1>从创建线程的回调函数中直接return , 也就是直接从启动例程中返回,返回值是线程的退出码。
2>线程可以被同一进程中的其他线程取消
2>线程调用pthread_exit
标签:
原文地址:http://www.cnblogs.com/alazalazalaz/p/4376722.html