1.设置线程属性,一般情况我只设置栈空间大小
void SetThreadAttr(pthread_attr_t *thread_attr,unsigned int priority,int policy,size_t stack_size)
{
size_t StackSize = 0;
pthread_attr_init(thread_attr);//首先需要对属性变量进行初始化
pthread_attr_setscope(thread_attr,PTHREAD_SCOPE_PROCESS);
pthread_attr_setdetachstate(thread_attr,PTHREAD_CREATE_JOINABLE);
pthread_attr_setschedpolicy(thread_attr,policy);
struct sched_param param;
pthread_attr_getschedparam(thread_attr, ¶m);
param.sched_priority = priority;
pthread_attr_setschedparam(thread_attr, ¶m);
if(stack_size < 0x4000) //以字节为单位 最小16k
{
StackSize = 0x4000;
}
pthread_attr_setstacksize(thread_attr,StackSize);
}
2.创建线程
int CreateThread(pthread_t *thread_id, const pthread_attr_t *attr,void *(*thread_fun) (void *), void *thread_arg)
{
int ret = -1;
ret = pthread_create(thread_id,attr,thread_fun,thread_arg);
return(ret);
}