| 线程控制原语 | 进程控制原语 |
| pthread_create() | fork() |
| pthread_self() | getpid() |
| pthread_join() | wait() |
| pthread_cancel() | kill() |
| pthread_detach | / |
线程属性
typedef struct
{
int detachstate; //线程的分离状态。
int schedpolicy; //线程调度策略。
struct sched_param schedparam; //线程的调度参数。
int inhertsched; //线程的继承性。
int scope; //线程的作用域。
size_t guardsize; //线程栈末尾的警戒缓冲区大小
int stackaddr_set; //线程栈的设置,
void *stackaddr; //线程栈的位置。
size_t stacksize; //线程栈的大小。
}pthread_attr_t;
主要结构体成员
:
1.
线程分离状态。
2.
线程栈大小
(
默认平均分配
)
。
3.
线程栈警戒缓冲区大小
(
位于栈末尾
)
线程属性初始化
注意
:
应先初始化线程属性,再
pthread_ create
创建线程。
初始化线程属性。
int pthread_attr_init(pthread_attr_t *attr);
销毁线程属性所占用的资源。
int pthread_attr_destroy(pthread_attr_t *attr);
这两个函数常常成对出现
线程的分离状态
线程的分离状态决定一个线程以什么样的方式来终止自己。
非分离状态线程的默认属性是非分离状态
,
这种情况下
,
原有的线程等待创建的线程结束。只有当
pthread_join()
函数返回时,创建的新线程才算终止
,
才能释放自己占用的系统资源。
分离状态
:
分离线程没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。
设置线程属性,分离
or
非分离
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
获取程属性,分离
or
非分离。
int pthread_attr_getdetachstate(pthread_attr_t * attr, int *detachstate);
设置分离属性
1. 创建一个线程
2. 初始化线程
3. 设置分离态
4. 利用分离态属性创建新的线程
5. 销毁初始化