多线程及加锁解锁"/>
C\C++ 多线程及加锁解锁
1、为什么用多线程?
并行处理任务,更快获得计算结果。
线程编程步骤:
1 线程id申明:pthread_t pid1;
2 线程创建函数:int ret=pthread_cread(&pid1, NULL, *Fuc, (void *)Fuc_args);
线程创建成功返回值为0,失败返回错误代码。
第一个参数是线程id地址;第二个参数是线程属性,值为NULL时表示使用线程默认属性;
第三个参数是线程函数入口地址(经测试该函数不用非得是空指针函数void * TestIp(void *args)?;
第四个参数是线程入口函数参数地址,1个参数传该参数的地址即可,多个参数用结构体地址来传递;
3 线程回收函数:pthread_join(pthread_t pid, NULL); 以阻塞的方式等待pid线程结束,并回收线程资源。
4 定义线程函数:(类型)Fuc { }
2、为什么加锁?
多线程访问共享资源时,为防止产生脏数据和错误而采取的方式。多线程访问同一个数据库时,数据库是共享资源,所以对库操作要加锁。
举例:1个厕所不能提供多人用,进入厕所加锁,使用完解锁,一个道理。
线程加锁步骤:
1 公共头文件a.h引用线程头文件 #include <pthread.h>
2 声明互斥锁的全局变量
extern phread_mutex_t sql_mutex;
3 宏定义加锁解锁操作
#define SQL_LOCK do{phread_mutex_lock(&sql_mutex);}while(0)
#de
更多推荐
C\C++ 多线程及加锁解锁
发布评论