【Linux】进程线程的命令及最大线程个数问题

(一)查看进程/线程的命令ps -eLf

L:显示线程id
在这里插入图片描述

(二)跟踪进程/线程系统调用情况

(1)正在运行的程序:strace -p 进程/线程号

在这里插入图片描述

(2)未运行的程序strace 可执行文件名

在这里插入图片描述

(三)跟踪库函数调用ltrace

(1)正在运行的程序ltrace - p 进程号/线程号

在这里插入图片描述

(2)未运行的程序ltrace 可执行文件名

在这里插入图片描述

(四)Linux系统一个进程最多可以创建多少个线程

取决因素:

  • Linux32位系统 or 64位系统
    在这里插入图片描述
  • 线程栈大小
  • 最大线程数限制
    在这里插入图片描述
    使用ulimit -s 线程栈大小(字节)修改线程栈的大小
    在这里插入图片描述
    注意:创建的最大线程数肯定是max user process的值,一般情况小于这个值
    在一定条件下,创建线程的个数和线程栈的大小成反比,在超过某个值后,线程数的最大值由max user process决定

(五)代码测试最大的线程数

代码:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>

void* fun(void* arg)
{
    
    
	while(1)
	{
    
    
		sleep(1);
	}
}

int main()
{
    
    
	pthread_t id;
	int ret = -1;
	for(int i = 1; i < 5000; i++)
	{
    
    
		ret = pthread_create(&id, NULL, fun, NULL);
		if(ret != 0)
		{
    
    
			break;
		}
		printf("i = %d\n", i);
	}
	sleep(3);
	exit(0);
}

结果:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/xiaoxiaoguailou/article/details/121607751