Linux多线程编程之线程控制
来源:互联网 发布:retintex算法 编辑:程序博客网 时间:2024/06/05 03:39
函数预览
- pthread_t pthread_id;
- int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg); //线程创建 thread指向存放创建线程的id attr设置创建线程的属性 start_routine新线程要执行的函数 arg传给start_routine的参数
- int pthread_join(pthread_t thread,void **retval);//等待被join的线程终止,获得其退出码
- int pthread_detach(pthread_t thread);//设置线程为可分离
- int pthread_cancel(pthread_t thread);//终止其他线程
- void pthead_exit(void *retval);//终止自身线程
注意点
- 编译链接时要加上-pthread
- 所有函数成功返回0,错误返回错误码(错误码没有放在errno中)
- 一个进程中的任意一个线程调用exit或_exit,整个进程中的所有线程都将终止
- 默认情况下,新创建的线程是可结合的
- 线程是可结合或者可分离的,一个可结合的线程能够被其他线程回收和终止,未回收之前,他的存储器资源(如栈)是不释放的;一个可分离的线程是不能够被其他线程回收和终止,他的存储器资源在他终止时由系统自动回收
- 为了防止资源泄露,一个可结合的线程要么被其他进程显示的回收(调用pthread_join),要么通过调用pthread_detach分离
- 调用pthread_join的线程,在被join的线程结束之前,该线程会被阻塞
- return或pthread_exit的指针所指的内存单元必须为全局的或者malloc的(不能是栈上的),否则函数退出便不存在了
线程终止的三种方式(不影响其他进程)
- 在线程函数中调用return(不适用于主线程,主线程在main函数return相当于调用exit-->所有线程终止)
- 被其他线程终止(pthread_cancel)
- 自身调用pthread_exit终止自己
0 0
- Linux多线程编程之线程控制
- Linux入门:多线程编程之线程控制
- 多线程编程之线程控制函数
- Linux编程之互斥锁线程控制
- linux多线程编程---线程同步之互斥锁
- Linux多线程编程之线程属性设置
- Linux多线程编程之线程同步操作
- Linux多线程编程之线程互斥锁
- Linux环境下多线程系列之线程控制
- Java多线程之控制线程
- Linux多线程编程之同步对象编程:线程信号量
- 多线程_线程控制之休眠线程
- 多线程_线程控制之加入线程
- 多线程_线程控制之礼让线程
- 多线程_线程控制之守护线程
- 多线程_线程控制之中断线程
- 多线程-线程控制之休眠线程
- 多线程-线程控制之加入线程
- Android Activtity Security
- Codeforces 631A Interview(分析&&位运算| )
- ubuntu 12.04 Server 上安装 nodejs, MongoDB
- 基础练习 查找整数
- IOC容器构造之注册BeanDefinition源码分析
- Linux多线程编程之线程控制
- UITextField实现PlaceHolder
- 使用VS调试高效修改代码(poj 3984为例)
- maven的环境配置
- 栈
- 进程和线程、并发和并行
- IBM MQ 错误代码 2009 目标“”注册回调失败 有时伴随有2059
- Android Drawable 那些不为人知的高效用法
- Android Hook (1) Dexposed原理