首页 > 系统相关 >linux 多线程 c++2

linux 多线程 c++2

时间:2022-11-20 19:34:24浏览次数:38  
标签:joinable 僵尸 linux 主线 c++ 线程 pthread 进程 多线程

为了在用线程分离的时候保证即使主线程退出了,子线程还能正常运行,可以使用pthread_exit(NULL)去退出主线程,这样地址空间还能正常存在

线程分离是为了保证主线程不会被堵塞,还能继续运行,这种情况下回收有系统进行。

正常运行的时候有阻塞是因为在我们使用默认属性创建一个线程的时候,线程是 joinable 的。 joinable 状态的线程,必须在另一个线程中使用 pthread_join() 等待其结束,如果一个 joinable 的线程在结束后,没有使用 pthread_join() 进行操作,这个线程就会变成”僵尸线程”。每个僵尸线程都会消耗一些系统资源,当有太多的僵尸线程的时候,可能会导致创建线程失败。

比如创建一个主线程和子线程,结果子线程先结束并且没有被回收,这种时候就会成为僵尸进程,如果主进程先结束问题不大,这种时候就会成为一个孤儿进程由init 进程接管,然后运行结束,但是这种时候运行的是init的默认进程,与原有进程的功能无关

可以用pthread_detach将一个线程设置为detachd状态

exit会让线程退出,但是不会导致虚拟地址空间的释放

 

标签:joinable,僵尸,linux,主线,c++,线程,pthread,进程,多线程
From: https://www.cnblogs.com/uestc-du/p/16909272.html

相关文章

  • Linux的文件系统分层结构(FSH):Filesystem Hierarchy Standard
    Linux的文件系统分层结构:Lunux文件系统常用的目录如下:根目录(/):根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机、还原、......
  • C++ Tips:signed main 和 int main 的区别?
    #include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){return0;}注意到#defineintlonglong而main函数必须返回一个in......
  • 嵌入式linux日常使用的网络工具分享
    前言作为嵌入式linux开发中我们经常会调试网络,这个时候需要一些网络工具辅助我们的工作,有一些是命令工具有些是GUI工具,这些生产力工具如何使用呢,今天做一个小分享(本篇文章......
  • Linux下安装Java运行环境
    1.下载java8的包,并上传到服务器/usr/local目录下wget命令是一个从网络上下载文件的自由工具,它支持http协议,https协议和ftp协议。因此我们可以通过wget命令来下载JDK。wge......
  • (转)Linux crontab命令详解
    原文:https://www.cnblogs.com/ftl1012/p/crontab.htmlcrontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟       日志文件: ll/var/lo......
  • 图文详解在VMware Workstation 16 PRO虚拟机上安装Ubuntu 22.04.5 linux系统
    一、下载Ubuntulinux系统镜像机构下载地址官网地址https://cn.ubuntu.com/download南京大学https://mirrors.nju.edu.cn/ubuntu-releases/20.04.5/山东......
  • Linux工作中最常用命令整理
    ls命令ls-a:显示所有文件夹,包含隐藏的.和..ls-l:显示文件的详细信息,包含文件形态,权限,所属,大小,其实就是平常用的llll-h:用易读的方式列出所有的文件信息cd......
  • WSL linux reset password
    Kali: cd C:\Users\user\AppData\Local\Microsoft\WindowsAppspowershell.exekaliconfig--default-userrootpasswdbobexitkaliconfig--default-userbobR......
  • 常用Linux命令-学习
    常用Linux命令文件目录类命令命令格式命令名称-选项参数命令浏览目录命令ls命令英文原意:list功能描述:显示目录文件pwd命令英文原意:printworkingdirector......
  • linux系统安装--ubutun20.04
    实验室设备:电脑实验软件:VMvare workstation、系统isoubutun20.04系统安装:1、新建虚拟机   2、设置光驱,加载镜像iso   3、系统安装配置 ......