博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux多线程编程API基础---1
阅读量:2441 次
发布时间:2019-05-10

本文共 2344 字,大约阅读时间需要 7 分钟。

背景:

工作需要用到Linux多线程编程,在学习和实践中学到了不少关于linux多线程编程技术,在此整理成笔记,方便便以后温故而知新!本篇博客也会由浅到深记录从0基础到深入学习linux多线程编程技术。(本博客不对之处,欢迎指正)

第一步:熟悉Linux Pthread API  

简要记录上面的API的具体函数参数和功能:

1. pthread_create(头文件什么的自己man,后边的介绍一样)

函数功能:创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。

函数声明:int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,

(void*)(*start_rtn)(void*),void *arg)

参数:

tidp线程标识符;

attr:线程属性设置;

start_rtn:线程函数的起始地址;

arg:传递给start_rtn的参数;

返回值:若线程创建成功,则返回0。若线程创建失败,则返回出错编号,并且*thread中的内容是未定义的。

2. pthread_exit

函数功能:线程通过调用pthread_exit函数终止执行。这个函数的作用是,终止调用它的线程并返回一个指向某个对象的指针

函数声明:void pthread_exit(void *rval_ptr)

参数:唯一的参数是函数的返回代码,如果rval_ptr参数不为NULL,这个值将被传递给thread_return

返回值:无

3. pthread_join

函数功能:以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。

函数声明: int pthread_join(pthread_t thread, void **retval);

参数:

thread:  标识线程的唯一标识符

retval:  线程返回值

返回值:成功返回0,失败返回错误号。

4. pthread_mutex_init

函数功能:用于互斥锁的初始化

函数声明:int pthread_mutex_init(pthread_mutex_t *restrict mutex, 

       const pthread_mutexattr_t *restrict attr)

参数:

mutex:初始化的互斥锁变量

attr: attr为空的话,则是默认属性,而默认属性的快速互斥锁

返回值:成功返回0,失败返回错误码(其他值)

5. pthread_mutex_destroy

函数功能:销毁互斥锁

函数声明:int pthread_mutex_destroy(pthread_mutex_t *mutex)

参数:mutex 指向要销毁的互斥锁的指针

返回值:成功返回0,失败返回错误码

6. pthread_mutex_lock

函数功能:锁定mutex 所指向的互斥锁

函数声明:int pthread_mutex_lock(pthread_mutex_t *mutex)

参数:mutex 带锁定的互斥锁变量

返回值:成功返回0,失败返回错误码

7. pthread_mutex_unlock

函数功能:释放互斥锁,pthread_mutex_lock成对存在

函数声明:int pthread_mutex_unlock(pthread_mutex_t *mutex)

参数:需要解锁的锁变量对象

返回值:成功返回0,失败返回错误码(一般不对返回值做检测)

8. pthread_cond_init

函数功能:初始化一个条件变量

函数声明:extern int pthread_cond_init __P ((pthread_cond_t *__cond, __const pthread_condattr_t *__cond_attr))

参数:

cond:条件变量

cond_attr:设置条件变量的属性

返回值:成功返回0 ,失败返回错误码

9. pthread_cond_destroy

函数功能:销毁一个条件变量

函数声明:int pthread_cond_destroy(pthread_cond_t *cond)

参数:cond为销毁条件变量的对象

返回值:成功返回0 ,失败返回错误码

10. pthread_cond_signal

函数功能:是发送一个信号给另外一个正在处于阻塞等待状态的线程,使其脱离阻塞状态,继续执行.如果没有线程处在阻塞等待状态,函数也会成功返回

函数声明:int pthread_cond_signal(pthread_cond_t *cond)

参数:cond为待发送的信号对象

返回值:成功返回0 ,失败返回错误码

11. pthread_cond_broadcast

函数功能:对所有等待参数cond所指定的条件变量的线程解除阻塞

函数声明:int pthread_cond_broadcast(pthread_cond_t *cond)

参数:cond为待发送的信号对象

返回值:成功返回0 ,失败返回错误码

12. pthread_cond_wait

函数功能:等待条件变量,防止竞争

函数声明:int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)

参数:

cond:cond为等待条件变量的对象

mutex:mutex 带锁定的互斥锁变量

返回值:成功返回0 ,失败返回错误码

下面的开始代码例程实战(由浅入深):

你可能感兴趣的文章
将ip保存在txt文档中_将任何文件存储在Google文档中
查看>>
disconf apps_Google Apps Drop IE6支持
查看>>
centos who_Who博士的新徽标设计
查看>>
lgo软件许可号许可码_软件是许可的还是出售的?
查看>>
SitePoint播客#29:Roy Rubin访谈
查看>>
Opera 10 Final发布
查看>>
使用Screenr创建截屏视频
查看>>
RockMelt:另一天,另一个新浏览器
查看>>
SitePoint播客#26:力量在于您
查看>>
SitePoint PDF上没有更多密码!
查看>>
coldfusion_五星! 向您的ColdFusion应用程序添加评分小部件
查看>>
SitePoint Podcast#24:这些框架具有讽刺意味
查看>>
jpc2bmp_使用JPC在您的手机上运行PC应用程序
查看>>
回溯法怎么回溯_无需浏览器的Windows 7 E上的Microsoft回溯
查看>>
网页版谷歌地图上标记多个点_Google正式放弃Beta版标记
查看>>
火狐游览器下载62.0.3_Firefox 3.5已发布-立即下载!
查看>>
google和微软的云策略_微软vs谷歌:继续前进
查看>>
微软首播其必应电视广告
查看>>
AppJet起飞时可能会束缚乘客
查看>>
dzone_DZone:面向开发人员的新闻汇总器和免费备忘单
查看>>