中山做企业网站,html5鱼缸,360未经证实的网站如何做,专业定制网吧桌椅一、进程的结束
wait(阻塞) 一般不做额外的事情
wait(非阻塞) 逻辑不受影响#xff08;必须套在循环中#xff09;
wait作用#xff1a;1.获取子进程退出状态 2.回收资源
传参为指针#xff1a;被调修改主调
获取退出状态值#xff1a;
WIFEXITED 判断是否…一、进程的结束
wait(阻塞) 一般不做额外的事情
wait(非阻塞) 逻辑不受影响必须套在循环中
wait作用1.获取子进程退出状态 2.回收资源
传参为指针被调修改主调
获取退出状态值
WIFEXITED 判断是否为正常退出
WEXITSTATUS 获取到exit传递的退出状态值
WIFSIGNALED 异常退出
WTERMISIG 接收致使异常退出的信号编号
waitpid:pid_t waitpid(pid_t pid,int *wstatus,int options)
参数pid -1表示等待所有子进程状态改变 pid 0 等待指定的子进程状态改变 wstatus 表示获取到的子进程的状态信息 options 分为阻塞0 与不阻塞WNOHANG 默认阻塞 阻塞会影响父进程处理逻辑 非阻塞必须套在循环中处理
二、线程
1.线程轻量级的进程 进程重量级 线程是CPU执行的最小单位 进程是资源分配的基本单位 线程创建和调度的时空开销都比进程小
组成线程tid 程序计数器 寄存器集合 栈区
2.线程存在于进程中 线程共享进程的资源 线程结束不一定导致进程结束 但进程结束会导致线程结束
3.线程的编程 类似于进程过程 NPTL 创建----执行-----退出-----资源回收
4.pthread_create: 创建一个指定线程
int pthread_create(pthreat_t *thread,const pthread_attr_t *attr,void *(*start _routine)(void *),void * arg)
参数 thread 线程tid,需要实现定义并由函数返回
attr:线程属性一般为NULL,表示默认属性可结合性分离属性 默认为可结合性 自己手动回收 分离属性 系统自动回收
start_routine 线程执行函数线程回调函数 完成线程任务功能的函数需要调用自己实现 指向指针函数的函数指针为一个函数的名称即可
arg 回调函数的参数
返回值成功返回0 失败返回错误码
编译时需要添加 -lpthread
主函数所在执行流为主线程 其他的线程为子线程次线程
各个线程间地位是平等的
pthread_self():获得当前线程的tid
pthread_exit: 结束调用的线程 pthread_exit(void *retval); 参数 retval 退出的状态值
pthread_exit 本身表示线程结束 若为main函数表示主线程结束
主线程结束不代表进程结束
此时 主线程执行流结束 进程会在其余线程结束后结束
pthread_join: int pthread_join(pthread_t thread,void **retval);
参数 thread 线程tid retval 用来保存退出状态值所在空间的地址
成功返回0 失败返回错误码