1. 线程的创建
1.1 线程创建函数
intpthread_create(
pthread_t*tidp,//线程的标识符指针
const pthread_attr_t*attr,//线程属性【重要】
(void*)(*start_rtn)(void*),//线程函数其实地址
void*arg//运行函数的参数
);
所属头文件:<pthread.h>
由于不属于默认库,所以编译的时候需加-lpthread。
如果你是使用的code::blocks,(我就是),需在 project -> build option -> linker setting中add添加 pthread (注:没有无需 l)
1.2 pthread_attr 的相关说明
pthread_attr属性描述了线程的运行状态:
__detachstate: 表示新线程是否与进程中其他线程脱离同步,如果置位则新线程不能用pthread_join()来同步,且在退出时自行释放所占用的资源。缺省为PTHREAD_CREATE_JOINABLE状态。这个属性也可以在线程创建并运行以后用pthread_detach()来设置,而一旦设置为PTHREAD_CREATE_DETACH状态(不论是创建时设置还是运行时设置)则不能再恢复到PTHREAD_CREATE_JOINABLE状态。
__schedpolicy,表示新线程的调度策略,主要包括 SCHED_OTHER(正常、非实时)、 SCHED_RR(实时、轮转法)和 SCHED_FIFO(实时、先入先出)三种,缺省为 SCHED_OTHER,后两种调度策略仅对 超级用户有效。在线程函数中可以用过 pthread_setschedparam()来改变。__schedparam,一个struct sched_param结构,目前仅有一个sched_priority整型变量表示线程的运行优先级。这个参数仅当调度策略为实时(即SCHED_RR或SCHED_FIFO)时才有效,并可以在运行时通过pthread_setschedparam()函数来改变,缺省为0。
__inheritsched,有两