linux下多线程编程总结
2014-04-15 11:38
295 查看
1.线程的基本函数形式
pthread_xxx(),在linux环境下,通常函数的返回值有一个约定,即失败返回-1,成功返回0。而在线程的一系列函数中,成功返回0,而失败返回错误代码,所以在进行函数执行情况判断是,不能判断是否等于-1,而应该判断是否等于0。创建线程
int pthread_create(pthread_t * thread , pthread_attr_t * attr, void *(*start_routine)(void *), void * arg);thread:指向pthread_t类型的指针,pthread_t类型是用于描述新创建的线程的类型
attr:用于设置线程的属性,若不需要特殊的属性,则将其简单设为NULL
start_routine:线程函数的其实地址
arg:线程函数的参数
终止线程
void pthread_exit(void * retval);
retval:指向线程所要返回对象的指针,注意不能让retval指向局部的变量
线程同步
int pthread_join(pthread_t thread, void **thread_return)
thread:线程的描述符
thread_return:一个指向指针的指针,第二级指针指向的是线程所要返回的对象
以上函数的使用,基于必须include <pthread.h>头文件
2.用信号量来进行线程同步
信号量的创建
int sem_init(sem_t * sem, int pshared, unsigned int value);sem:指向信号量描述符对象的指针
pshared:控制信号量的类型,0表示该信号量是当前进程的局部信号量,否则,这个信号量可以在多个进程中使用
value:信号量的初始值
信号量的控制
int sem_wait(sem_t *sem); int sem_post(sem_t *sem);sem_post作用是以原子操作的方式给信号量加1
sem_wait以原子操作的方式给信号量减1,但他会等到信号量非0的时候才会减,如果信号量值为零时,调用该方法,会等待。
信号量的销毁
int sem_destroy(sem_t * sem);若清理的信号量正在被一些线程使用,就会收到一个错误。
相关文章推荐
- linux下多进程/多线程编程总结
- LINUX!
- Linux 内核软中断(softirq)执行分析
- Linux那些事儿 之 戏说USB(23)设备的生命线(二)
- Linux framebuffer tutorial
- 修改Linux默认启动级别或模式
- linux各文件夹的作用
- Linux普通用户使用libusb访问usb设备的方法
- 基于嵌入式Linux的SOHO路由器设计
- Linux各类压宿包的解压方法
- Linux下安装Matlab7.0
- linux下区分各种SCSI磁盘类型
- WinCE 与Linux之间的签名验证及加解密
- Linux文件查找命令find
- Linux的权限和所有权模型(粘滞位)
- linux系统设置
- linux下删除自带jdk
- linux调试工具ipcs的深入分析
- scoket linux c++