线程控制
线程创建:
pthread_create()
pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。
若线程创建成功,则返回0。若线程创建失败,则返回出错编号,并且*thread中的内容是未定义的。
头文件:
#include<pthread.h>
int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, (void*)(*start_rtn)(void*),void *arg);
参数:
第一个参数为指向线程标识符的指针;
第二个参数用来设置线程属性;
第三个参数是线程运行函数的起始地址;
第四个参数是运行函数的参数;
返回成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于指定各种不同的线程属性。新创建的线程从start_rtn函数的地址开始运行,该函数只有一个万能指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg的参数传入。
线程属性结构如下:
typedef struct
{
int detachstate; 线程的分离状态
int schedpolicy; 线程调度策略
struct sched_param schedparam; 线程的调度参数
int inheritsched; 线程的继承性
int scope; 线程的作用域
size_t guardsize; 线程栈末尾的警戒缓冲区大小
int stackaddr_set;
void * stackaddr; 线程栈的位置
size_t stacksize; 线程栈的大小
}pthread_attr_t;
****************************
线程互斥锁:
pthread_mutex_lock()
pthread_mutex_unlock()
当该函数返回时,该互斥锁已经被锁定。线程调用该函数让互斥锁上锁,如果该互斥锁已被另一个线程锁定和拥有,则调用该线程将阻塞,直到该互斥锁为可用为止;
头文件为:
#include <pthread.h>
pthread_mutex_lock(&sys_config_change_lock);
comRes.baudrate=ui_com.baudrate.toInt();
if(ui_com.parity=="奇校验")
{
comRes.parity=1;
}
if(ui_com.parity=="偶校验")
{
comRes.parity=2;
}
if(ui_com.parity=="无")
{
comRes.parity=0;
}
sys_config_change_flag=TRUE;
pthread_mutex_unlock(&sys_config_change_lock);
**********************************************************
浙公网安备 33010602011771号