|
线程的优点
|
线程的缺点
|
|
上下文切换需要更少的系统资源
|
并发读/写需要同步
|
|
增加了应用程序的吞吐量
|
很容易破坏它进程的地址空间
|
|
任务间的通讯不需要特殊机制
|
只存在于单个进程中,因此不能被重用
|
|
简化了程序结构
|
|
|
函数
|
属性
|
含义
|
|
int pthread_attr_setdetachstate
(pthread_attr_t* attr ,int detachstate)
|
detachstate
|
detachstate属性控制一个线程是否是可分离的
|
|
int pthread_attr_setguardsize
(pthread_attr_t* attr ,size_t guardsize)
|
guardsize
|
guardsize属性设置新创建线程栈的保护区大小
|
|
int pthread_attr_setinheritsched
(pthread_attr_t* attr, int inheritsched)
|
inheritsched
|
inheritsched决定怎样设置新创建线程的调度属性
|
|
int pthread_attr_setschedparam
(pthread_attr_t* attr ,
const struct sched_param* restrict param)
|
param
|
param用来设置新创建线程的优先级
|
|
int pthread_attr_setschedpolicy
(pthread_attr_t* attr, int policy)
|
policy
|
Policy用来设置先创建线程的调度策略
|
|
int pthread_attr_setscope
(pthread_attr_t* attr ,
int contentionscope)
|
contentionscope
|
contentionscope用于设置新创建线程的作用域
|
|
int pthread_attr_setstack
(pthread_attr_t* attr, void* stackader,
size_t stacksize)
|
stackader
stacksize
|
两者共同决定了线程栈的基地址以及堆栈的最小尺寸(以字节为单位)
|
|
int pthread_attr_setstackaddr
(pthread_attr_t* attr , void* stackader)
|
stackader
|
stackader决定了新创建线程的栈的基地址
|
|
int pthread_attr_setstacksize
(pthread_attr_t* attr, size_t stacksize)
|
stacksize
|
stacksize决定了新创建线程的栈的最小尺寸(以字节为单位)
|
|
int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit)
其中,inherit的值为下列值中的其一:
enum
{
PTHREAD_INHERIT_SCHED, //线程调度属性从创建者线程继承
PTHREAD_EXPLICIT_SCHED //线程调度属性设置为attr设置的属性
};
|
|
线程模型
|
含义
|
|
委托模型
|
Boss线程创建其他线程(worker线程),并给每个worker线程分配任务。Boss线程可能在每个线程完成它们的任务之前一直等待。
|
|
对等模型
|
所有的线程都具有相同的工作状态。对等线程创建执行任务所需要的所有线程,但不执行委托职责。对等线程可以从单个输入流处理请求,这些输入流被所有线程共享,或者每个线程都有其自己的输入流。
|
|
管道模型
|
类似于装配线流程,分阶段处理输入流,然后传给下一个线程进行处理
|
|
生-消模型
|
生产者线程生产数据给消费者线程使用,数据存储在生产者和消费者共享的存储块中。
|
1万+



被折叠的 条评论
为什么被折叠?



