pthread使用
来源:互联网 发布:闲鱼怎么申请淘宝介入 编辑:程序博客网 时间:2024/06/08 10:19
pthread_t
- pthread_t用于表示Thread ID,具体内容根据实现的不同而不同,有可能是一个Structure,因此不能将其看作为整数
- pthread_equal函数用于比较两个pthread_t是否相等
int pthread_equal(pthread_t tid1, pthread_t tid2)
pthread_create
int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
a. pthread_t *restrict tidp:返回最后创建出来的Thread的Thread ID
b. const pthread_attr_t *restrict attr:指定线程的Attributes,包括detach state,是否joinable,cancel state,cancel type等等
c. void (*start_rtn)(void ):指定线程函数指针,该函数返回一个void ,参数也为void
d. void *restrict arg:传入给线程函数的参数
e. 返回错误值。当且仅当返回值为0时,表示成功创建。
pthread_kill
int pthread_kill(pthread_t thread, int sig);
- 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。pthread_kill函数向指定ID的线程发送sig信号。
- 如果线程代码内不做处理,或者说没有实现signal处理函数,则按照信号默认的行为影响整个进程。例如,pthread_kill(threadid, SIGKILL)杀死进程,pthread_kill(threadid, SIGQUIT)使进程退出,而如果线程内实现了signal(SIGKILL,sig_handler)或signal(SIGQUIT,sig_handler),就会按照sig_handler指定的处理方式进行了。
- 传递的pthread_kill的signal参数一般都是大于0的,这时系统默认或者自定义的都是有相应的处理程序。signal为0时,是一个被保留的信号,一般用这个保留的信号测试线程是否存在。
- pthread_kill返回值:
0: 调用成功。
ESRCH:线程不存在。
EINVAL:信号不合法。
int kill_rc = pthread_kill(thread_id,0);if(kill_rc == ESRCH)printf("the specified thread did not exists or already quit\n");else if(kill_rc == EINVAL)printf("signal is invalid\n");elseprintf("the specified thread is alive\n");
pthread_join
int pthread_join(pthread_t tid, void **status);
功能:pthread_join()函数会一直阻塞调用线程,直到指定的线程tid终止。当pthread_join()返回之后,应用程序可回收与已终止线程关联的任何数据存储空间(另外也可设置线程attr属性,当线程结束时直接回收资源)。如果没有必要等待特定的线程终止之后才进行其他处理,则应当将该线程分离pthread_detach()。
参数:
tid:需要等待的线程,指定的线程必须位于当前的进程中,而且不得是分离线程
status:线程tid所执行的函数start_routine的返回值(start_routine返回值地址需要保证有效),其中status可以为nullptr
返回值:
调用成功完成后,pthrea_join()返回0,其他任何返回值都表示出现了错误。
阅读全文
0 0
- pthread使用
- pthread使用
- pthread线程使用小结
- Windows下使用pthread
- Windows下使用pthread
- pthread库使用总结
- pthread线程使用小结
- 使用#include <pthread.h>
- Pthread使用例子
- windows 下使用 pthread
- Windows下使用pthread
- win32下使用pthread
- Windows下使用pthread
- windows 下使用pthread
- pthread使用实例
- Windows下使用pthread
- Windows下使用pthread
- pthread使用(多线程002)
- C语言——常量指针、指针常量以及指向常量的指针常量三者区别详解
- Spring Cloud微服务断路由Hystrix与服务网关学习笔记
- 使用 Spring 容器管理 Filter
- 创建oracle用户
- DirectX 的默认灯光
- pthread使用
- MySQL数据库参数优化
- css 浮动 相对定位 绝对定位区别
- 微信公众平台显示隐藏网页右上角菜单(第九课)
- android 中保存bgra数据为jpg文件
- 刚刚听了一遍周杰伦的《半兽人》
- python数据结构简介
- EJB+JPA
- 静态字段和静态构造函数