#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/time.h>
#include <limits.h>
//编译命令:g++ -g -o multithread multithread-2.c -lpthread
const char *FILE_PATH="/root/test";
const int file_size[]={512,1024,46900};
struct args
{
int max;
int min;
};
void* work( void*);
int main()
{
//printf("%s\n",FILE_PATH);
printf("starting.........\n");
int array_length=sizeof(file_size)/sizeof(file_size[0]);
pthread_t* ids=(pthread_t*)malloc(sizeof(pthread_t)*array_length);
int ret,i;
struct args* arg;
for( i=0;i<array_length;i++)
{
arg=(struct args*)malloc(sizeof(struct args));
if(i==0)
{
arg->max =file_size[0];
arg->min = 0;
}
else
{
arg->max=file_size[i];
arg->min=file_size[i-1];
}
ret=pthread_create(&ids[i],NULL,work,arg);
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
}
for(int i=0;i<array_length;i++)
{
pthread_join(ids[i],0);
}
free(ids);
free(arg);
printf("ending.........\n");
return 0;
}
void* work(void* parameter)
{
args *arg=(args*)parameter;
printf("this is a thread:[min-max]=%d-%d,id=%d\n",arg->min,arg->max,pthread_self());
struct timeval* tv=(struct timeval*)malloc(sizeof(struct timeval));
struct timezone* tz=(struct timezone*)malloc(sizeof(struct timezone));
gettimeofday(tv,tz);
printf("%d\n",tv->tv_sec);
printf("%d\n",tv->tv_usec);
char* char1=(char*)malloc(1000);
sprintf(char1,"%d%d",tv->tv_sec,tv->tv_usec);
printf("time:%s\n",char1);
srand((unsigned)atoi(char1));
int i;
for(i=0;i<10;i++)
{
long int _rand =rand();
printf("seed:%d\n",_rand);
int bs=_rand%(arg->max-arg->min)+arg->min+1;
printf("random:%d\n",bs);
sprintf(char1,"dd if=/dev/zero of=%s/test.%d.%d.bin count=10 bs=%d\n",FILE_PATH,i,bs,bs);
printf("%s\n",char1);
//system(char1);
}
free(tv);
free(tz);
free(char1);
}
分享到:
相关推荐
其中args_cmd.h是解析命令相关的头文件,ctrl.c和ctrl.h是控制命令的源代码,proc_cmd.c是具体操作的源代码,thread.c和thread.h是线程相关的源代码,types.h是类型相关的源代码,net_send.h是网络相关的源代码。...
在Linux操作系统中,C语言是开发底层程序的常用语言,特别是在系统编程领域,如定时器的实现。本节我们将深入探讨Linux环境下如何使用C语言创建基于红黑树(Red-Black Tree)的多线程定时器,以及如何设置定时回调...
Linux 线程池创建 C 实现 线程池是一种常用的并发编程技术,它可以提高应用程序的性能和响应速度。在 Linux 系统中,使用 C 语言创建线程池可以实现高效的并发处理。 什么时候需要创建线程池呢?简单的说,如果一...
### Linux下C语言编程——线程操作 #### 前言:Linux下线程的创建与基础使用 在Linux环境中,线程作为一种重要的并发机制,为开发者提供了在单个进程中执行多个任务的能力。相较于进程,线程之间的切换成本更低,...
【头歌Linux系统编程之C编程入门】是一个关于在Linux环境下进行C语言编程学习的教程。这个教程覆盖了从基础的C语言编程到更高级的Linux系统编程技术,旨在帮助初学者逐步掌握在Linux系统中编写C程序的能力。 1. **...
在Linux环境下进行C语言多线程编程,可以利用POSIX线程库(pthread),这是一个跨平台的线程API,能够支持多种操作系统,包括Linux。在这个简单的实例中,我们将学习如何创建、同步和管理多线程。 首先,我们需要...
"鸿蒙_rtthread_Linux_Android驱动开发比较"这一标题涉及了三个主要的关键词:鸿蒙、rtthread以及Linux和Android的驱动开发。鸿蒙是中国华为公司开发的操作系统,rtthread是一个开源的实时操作系统(RTOS),而Linux...
Linux 下 C 语言多线程编程实例 Linux 下的多线程编程是一种非常重要的技术,在实际应用中有非常广泛的应用范围。多线程编程可以大大提高程序的执行效率和响应速度。但是,多线程编程也存在一些复杂性,例如线程...
### Linux多线程 C语言编程知识点总结 #### 一、多线程与多进程编程概述 **多线程**的概念可以追溯到20世纪60年代,然而直到80年代中期,这一机制才被正式引入到Unix系统中。随着计算机硬件的发展及软件需求的增加...
本线程池采用C语言实现。包括以下内容 > - thread_pool_create:创建线程池所需要的资源,包含不限于任务队列,子线程的创建。 > - thread_pool_post:用于任务的发布,将执行任务存在任务队列中。 > - thread_pool_...
Linux下多线程计算圆周率 C语言 //实现一个用多线程计算 π(圆周率)的程序。 #include #include #include #include #define N 50000//设定计算次数 #define NUM 2//设定线程数,经过反复实验,在装有1个双核...
### C语言Linux系统编程入门知识点概述 #### 一、Linux下的C语言编程基础 ##### 1. 源程序的编译 - **GCC编译器**: 在Linux环境下,使用GCC(GNU Compiler Collection)作为主要的编译工具。GCC不仅支持C语言,还...
### Linux 下 C 语言多线程编程实例解析与关键技术点 #### 一、多线程基础知识 在Linux环境下,利用C语言进行多线程编程是一种常见的技术手段,它能够有效地提高程序的并发处理能力,充分利用现代多核处理器的计算...
在深入探讨Linux下线程池的C语言实现之前,我们首先需要理解线程池的基本概念以及它在系统设计中的重要性。线程池是一种管理线程的机制,它预先创建一组固定数量的线程,等待任务的到来,从而避免了频繁创建和销毁...
3. "linux cbasic.doc":可能是对Linux环境下C语言基础的介绍,包括变量、数据类型、流程控制语句等。 4. "thread handling.doc":讲述了线程管理,包括线程创建、同步、通信和线程安全问题。 5. "time.doc":可能...
### Linux下的多线程编程初步 #### 线程的概念 在探讨多线程编程之前,我们首先需要明确什么是线程。线程是程序中能够被操作系统调度并发执行的最小单位,它存在于进程之中,是进程的一个执行路径。与进程相比,...
### Linux下C语言编程知识点详解 #### 一、Linux C语言编程基础知识 ##### 源程序编译 在Linux环境中,使用C语言编程时最常用的编译器是GNU的`gcc`(GNU Compiler Collection)。通过`gcc`可以将C语言源代码编译成...
标签进一步确认了这个压缩包的内容,包括"linux_c++_function"、"unix_c_chm"等,表明不仅有C语言的函数,还可能涉及到C++的相关功能,特别是与系统交互的部分。"chm_linux_c++"表明C++部分也是以CHM格式提供的。 ...