杭州市临安区建设局网站,吴江区网站建设,凡客优品官网,域名解析步骤进程线程
1.进程的概念 2.进程 和 程序 硬盘中程序 #xff0c;加载到内存中#xff0c;运行起来#xff0c;就是进程
创建线程 pthread_create posix thread create 线程执行 ---体现在线程执行函数 (回调函数) 线程退出 ---pthread_exit() …进程线程
1.进程的概念 2.进程 和 程序 硬盘中程序 加载到内存中运行起来就是进程
创建线程 pthread_create posix thread create 线程执行 ---体现在线程执行函数 (回调函数) 线程退出 ---pthread_exit() 线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return 都会造成 进程结束 线程资源回收 ---pthread_join int pthread_cancel(pthread_t thread); 功能: 发送 取消的请求 参数: thread //表示要发送的线程的tid号 返回值: 成功 0 失败 错误码 线程资源回收 1.pthread_join //需要自己回收 ---线程的属性 (可结合性) --- 一般是子线程 在较短时间内运行完 2.pthread_detach //可分离属性 ---子线程运行很久才结束 --- 设置分离属性 函数: pthread_detach(); int pthread_detach(pthread_t thread); 功能: 分离线程 参数: thread 要分离的线程的tid 返回值: 成功 0 失败 错误码 1.创建 -- pthread_create 2.执行 -- 线程执行函数 3.退出 -- pthread_exit return //线程执行函数中 pthread_cancel exit() //return 从main 4.资源回收 可结合性 --- pthread_join //这种用于 线程任务较短主线程需要关心子线程状态 可分离性 --- pthread_detach //子程序执行任务较长主线程也不需要关心子线程状态
各自特点 (优缺点) 1.创建 和 调度 线程 创建速度快 调度速度快 //并发程度 更高 2. 安全性 线程 好处: 共享了进程的数据空间 共享数据方面 方便 缺点: 安全性不好带来资源竞争 进程空间相互独立 好处 安全性好 缺点: 进程间共享数据不方便 进程间通信 (管道,信号共享内存) 在C语言中互斥锁是一种同步机制用于防止多个任务线程或进程同时访问共享资源从而避免数据竞争和一致性问题。互斥锁在多线程环境中非常重要因为它们确保在任意时刻只有一个线程可以访问特定的代码段或数据。
定义互斥锁: pthread_mutex_t mutex; 互斥锁类型 互斥锁变量 内核对象 初始化锁 pthread_mutex_init(); //初始化一把锁 加锁 //加锁 加在 要访问临界资源的地方 pthread_mutex_lock(); //上锁 解锁 pthread_mutex_unlock(); //解锁 临界资源访问之后就解开 销毁 pthread_mutex_destroy();//销毁一把锁 在C语言中死锁是一种特定类型的进程同步问题当两个或多个进程在执行过程中因争夺资源而造成的一种僵局。在这种僵局中每个进程都在等待其他进程释放资源而如果这些资源都已被其他进程占有那么没有一个进程能够向前推进这就形成了死锁。
死锁通常涉及以下四个必要条件这四个条件必须同时满足才可能导致死锁
互斥条件资源不能被多个进程共享一次只能由一个进程使用。占有和等待条件进程至少持有一个资源并且正在等待获取其他进程持有的资源。不可剥夺条件已经分配给一个进程的资源在未使用完之前不能被强行夺走只能由该进程自己释放。循环等待条件存在一种进程资源的循环等待关系即进程间形成了一个闭环每个进程都在等待下一个进程所占有的资源。