Linux提高:多线程压力测试

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux提高:多线程压力测试相关的知识,希望对你有一定的参考价值。

题目

创建一个多进程的程序,由用户输入进程个数和每个进程的运行圈数

代码

在这里插入图片描述

/*************************************************************************
    > File Name: main.c
    > Author: 杨永利
    > Mail: 1795018360@qq.com 
    > Created Time: 2021年07月14日 星期三 21时22分03秒
 ************************************************************************/

/*
此程序为线程的压力测试程序,即由用户输入线程个数和运行圈数
*/
#include <unistd.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
//线程运行圈数
int iThreadLoop = 0;
void * start_routine(void *arg)
{
	int i = 0;
	int iThreadNum = (int)arg;
	for (i = 0; i < iThreadLoop; i++) {
		printf("第 %d 个线程运行第 %d 圈!\\n", iThreadNum + 1, i + 1);
	}
}
int main(int argc, char const *argv[])
{
	//线程个数
	int iThreadNum = 0;
	int i = 0;
	printf("请输入线程个数:\\n");
	scanf("%d", &iThreadNum);

	printf("请输入每个线程运行圈数:\\n");
	scanf("%d", &iThreadLoop);
	pthread_t *tid = (pthread_t*)malloc(sizeof(pthread_t)*iThreadNum);
	if (NULL == tid) {
		printf("申请内存失败\\n");
		exit(1);
	}
	for (i = 0; i < iThreadNum; i++) {
		pthread_create(&tid[i], NULL, start_routine, (void *)i);
	}
	for (i = 0; i < iThreadNum; i++) {
		pthread_join(tid[i], NULL);
	}
	free(tid);
	tid = NULL;
	return 0;
}

知识回顾

线程

线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。

线程和进程的区别在于是否独享一段地址空间。 在 Linux 系统下:

  • 线程:是最小的执行单位。

  • 进程:是最小资源分配单位,可看成是只有一个线程的进程。

线程特点

  1. 线程是轻量级进程(light-weight process),也有 PCB,创建线程使用的底层函数和进程一样,都是 clone。
  2. 从内核里看进程和线程是一样的,都有各自不同的 PCB。
  3. 进程可以蜕变为线程。
  4. 在 linux 下,线程最是小的执行单位;进程是最小的分配资源单位

以上是关于Linux提高:多线程压力测试的主要内容,如果未能解决你的问题,请参考以下文章

Linux提高:多进程压力测试

Linux提高:多进程压力测试

多线程压力测试失败

YCSB压力测试工具安装

python学习 —— 多线程发送请求测试服务器压力

Linux Linux程序练习十四(多进程压力测试)