mySc day8
来源:互联网 发布:scratch趣味编程 ppt 编辑:程序博客网 时间:2024/06/10 06:27
查看线程
命令:
ps -T -p <pid> -T 开启线程查看
top -H -p <pid> -H 开启线程查看
htop 设置 F2
F10
文件:
/proc/PID/task 线程默认的名字和进程名相同
/proc/PID/task/tid/comm 线程名
主线程
线程合并
可以由其他线程终止,回收资源
int pthread_join(pthread_t tid,void** retval)
一个用户定义的指针,可以用来返回值
线程分离
不能被其他线程终止,存储资源在它终止时由系统自动回收释放
int pthread_detach(pthread_t tid)
线程取消
取消点
如果线程接收到取消信号,到达指定位置才能取消
分类: 手动 void pthread_testcancel(tid)
自动 引起阻塞的系统调用
操作:
发送取消信号
int pthread_canel(pthread_t thread)
设置当前线程的取消状态
int pthread_setcancel
设置当前线程的取消类型
int pthread_setcanceltype(int type,int* oldtype)
设置取消点
int pthread_setcancelstate(int state,int* oldstate);
注意:有些函数自带取消点,使用man 7 pthreads查看
取消点取消(默认):遇到取消点取消线程
1.很多函数默认自带取消点printf()/sleep() *注意不同版本处理有差异,可以通过man 7 pthreads查看
2.手动设置取消点pthread_testcancel()
强制取消:接受到取消信号立即取消线程
设置pthread_setcanceltype(PTHREAD_CANCEL_DISABLE,NULL)
禁用线程取消
设置pthread_setcancelstate(PTHREAD_CNACEL_DISABLE,NULL)
启用线程取消(默认)
设置pthread_setcancelstate(PTHREAD_CANCEL_ABLE,NULL)
线程取消测验命令:
thread_pthread [-d] [-p]
默认 取消点取消,并且是启用取消
-d 禁用取消
-a 强制取消
实现设计三个线程
1.用作接收取消信号
2.用来发送取消信号
3.用来查看第一个线程是否被取消
int pthread_kill(pthread_t thread,int sig)
并发度
设置并发度
int pthread_setconcurrency(int level)
获取并发度
int pthread_getconcurrency(void)
自动释放资源
void pthread_cleanup_pop(int execute) execute 通常为0
void pthread cleanup_
进程与线程的区别
接口对比
进程
fork();exit/return;kill;wait/waitpid
线程
pthread_create();return/pthread_exit;pthread_kill/pthread_cancel;pthread_join
粒度
进程是资源分配和拥有的基本单位
线程是处理器调度的基本单位
资源
进程有独立的地址空间
线程共享进程的地址空间
效率
线程上下文切换比进程上下文切换要快的多
稳定性
子进程崩溃,不影响父进程与其他子进程
任何一个线程崩溃,整个程序崩溃
命令:
ps -T -p <pid> -T 开启线程查看
top -H -p <pid> -H 开启线程查看
htop 设置 F2
F10
文件:
/proc/PID/task 线程默认的名字和进程名相同
/proc/PID/task/tid/comm 线程名
主线程
线程合并
可以由其他线程终止,回收资源
int pthread_join(pthread_t tid,void** retval)
一个用户定义的指针,可以用来返回值
线程分离
不能被其他线程终止,存储资源在它终止时由系统自动回收释放
int pthread_detach(pthread_t tid)
线程取消
取消点
如果线程接收到取消信号,到达指定位置才能取消
分类: 手动 void pthread_testcancel(tid)
自动 引起阻塞的系统调用
操作:
发送取消信号
int pthread_canel(pthread_t thread)
设置当前线程的取消状态
int pthread_setcancel
设置当前线程的取消类型
int pthread_setcanceltype(int type,int* oldtype)
设置取消点
int pthread_setcancelstate(int state,int* oldstate);
注意:有些函数自带取消点,使用man 7 pthreads查看
取消点取消(默认):遇到取消点取消线程
1.很多函数默认自带取消点printf()/sleep() *注意不同版本处理有差异,可以通过man 7 pthreads查看
2.手动设置取消点pthread_testcancel()
强制取消:接受到取消信号立即取消线程
设置pthread_setcanceltype(PTHREAD_CANCEL_DISABLE,NULL)
禁用线程取消
设置pthread_setcancelstate(PTHREAD_CNACEL_DISABLE,NULL)
启用线程取消(默认)
设置pthread_setcancelstate(PTHREAD_CANCEL_ABLE,NULL)
线程取消测验命令:
thread_pthread [-d] [-p]
默认 取消点取消,并且是启用取消
-d 禁用取消
-a 强制取消
实现设计三个线程
1.用作接收取消信号
2.用来发送取消信号
3.用来查看第一个线程是否被取消
int pthread_kill(pthread_t thread,int sig)
并发度
设置并发度
int pthread_setconcurrency(int level)
获取并发度
int pthread_getconcurrency(void)
自动释放资源
void pthread_cleanup_pop(int execute) execute 通常为0
void pthread cleanup_
进程与线程的区别
接口对比
进程
fork();exit/return;kill;wait/waitpid
线程
pthread_create();return/pthread_exit;pthread_kill/pthread_cancel;pthread_join
粒度
进程是资源分配和拥有的基本单位
线程是处理器调度的基本单位
资源
进程有独立的地址空间
线程共享进程的地址空间
效率
线程上下文切换比进程上下文切换要快的多
稳定性
子进程崩溃,不影响父进程与其他子进程
任何一个线程崩溃,整个程序崩溃
阅读全文
0 0
- mySc day8
- mySc day10
- mySc day7
- day8
- DAY8
- Day8
- DAY8
- Day8
- day8
- Day8
- day8-笔记
- Day8.01
- Day8.02
- Day8.03
- Day8.04
- Day8.05
- Day8.06
- Day8.07
- DP-斜率优化初探 之 记录
- 堆排序_Heap Sort
- Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
- Android【官方教程】NDK 概念
- angular的一些基本常识
- mySc day8
- 概率编程——未来也可以这样预测
- HDU 5973 威佐夫博弈+JAVA高精度
- cron表达式
- 简单的算法问题4——移除数组中重复的元素
- 记一次惊险的文件恢复经历Eclipse saved my day
- 输入框input值变化
- 【13.2】c++ primer plus 课后编程答案
- Codeforces