设为首页 加入收藏

TOP

Linux多线程编程
2014-11-24 12:29:27 来源: 作者: 【 】 浏览:1
Tags:Linux 线程 编程

作为多任务实现的一种机制,多线程应用得非常广泛,相对于多进程,多线程不仅运行效率高,而且还可以提高系统资源的使用效率。虽然网上关于多线程的讲解已经有一大堆,但出于学习的心态,有必要在这里做一下笔记。


一、多线程编程常用函数


1. int pthread_create(pthread_t * thread,const pthread_attr_t * attr,void * (*start_routine)(void *), void *arg);


作用:创建一个新线程


参数:


thread:线程ID


attr:线程属性(包括调度策略,调度参数,堆栈地址,堆栈大小等)。一般设置为NULL,即采用系统默认属性


void * (*start_routine):线程函数指针


*arg:线程函数参数的指针


返回值:


0:表示创建成功


其他:表示创建失败失败


2. int pthread_join(pthread_t th, void **thread_return);


作用:等待其他线程终止


参数:


th:需要等待的线程的ID


thread_return:所等待的线程的返回值


返回值:


0:表示成功


其他:表示失败


3. void pthread_exit(void *retval);


作用:终止当前线程


参数:


retval:线程的返回值


4. int pthread_mutex_lock(pthread_mutex_t *mutex);


作用:上锁,如果锁不可用则会阻塞当前线程直到锁可用


参数:


mutex:互斥变量


5. int pthread_mutex_unlock(pthread_mutex_t *mutex);
作用:与pthread_mutex_lock()相反


6. pthread_t pthread_self(void);


作用:返回当前线程ID


返回值:


当前线程ID


7. int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);


作用:解锁mutex,等待条件变量cond被发出信号


参数:


cond:条件变量


mutex:互斥锁对象


在调用此函数之前要先获得互斥锁,调用此函数时会自动释放互斥锁以防止死锁,这就是为什么此函数与互斥锁联系在一起的原因。另外此函数调用成功后当前线程会被挂起并放弃CPU,因此在等待的过程中是不会占用CPU资源的,当条件满足(被唤醒)时会重新上锁。


8. int pthread_cond_signal(pthread_cond_t *cond);


作用:重新开始(唤醒)正在等待条件变量cond的线程


参数:


cond:条件变量


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux汇编---函数调用过程 下一篇C语言内存分配小问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)