线程控制

线程创建:

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);

**********************************************************

posted on 2016-03-11 10:46  Joker714  阅读(158)  评论(0)    收藏  举报

导航