多线程下的fork
多线程下的fork函数
在多线程下调用fork函数,仅仅会将发起调用的线程复制到子进程中去,也就是说,不能创建出与父进程一样多的子线程
其他线程均在子进程中立即停止并消失,并且不会为这些线程调用清理函数,这可能会造成子进程内存,文件描述符的泄露
子进程复制父进程的整个地址空间,从父进程那里继承了所有的互斥量和条件变量,如果某个线程锁定了某一个互斥锁,那么在子进程中互斥锁可能因得不到释放而造成死锁现象。
使用方法
1. 调用fork后。立即调用exec函数执行另一个程序,彻底阻断子进程和父进程的关系,由新的进程覆盖掉原有的内存,使子进程中所有的线程相关对象消失
2.使用pthread_atfork() + fork来创建子进程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律