打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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 下,线程最是小的执行单位;进程是最小的分配资源单位
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux 的进程与线程
Linux——线程编程
Linux 线程学习(一)
linux线程的线程ID与其进程ID
linux 系统文件操作sem_open, sem_close, sem_post, sem_wait
Posix线程编程指南
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服