`
genier200
  • 浏览: 23192 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类

linux c thread

 
阅读更多
#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);

}
分享到:
评论
1 楼 genier200 2011-08-09  
update,修复bug

相关推荐

    嵌入式Linux C语言应用程序设计

    其中args_cmd.h是解析命令相关的头文件,ctrl.c和ctrl.h是控制命令的源代码,proc_cmd.c是具体操作的源代码,thread.c和thread.h是线程相关的源代码,types.h是类型相关的源代码,net_send.h是网络相关的源代码。...

    Linux下C语言 定时器

    在Linux操作系统中,C语言是开发底层程序的常用语言,特别是在系统编程领域,如定时器的实现。本节我们将深入探讨Linux环境下如何使用C语言创建基于红黑树(Red-Black Tree)的多线程定时器,以及如何设置定时回调...

    linux线程池创建c实现

    Linux 线程池创建 C 实现 线程池是一种常用的并发编程技术,它可以提高应用程序的性能和响应速度。在 Linux 系统中,使用 C 语言创建线程池可以实现高效的并发处理。 什么时候需要创建线程池呢?简单的说,如果一...

    Linux下C语言编程--线程操作

    ### Linux下C语言编程——线程操作 #### 前言:Linux下线程的创建与基础使用 在Linux环境中,线程作为一种重要的并发机制,为开发者提供了在单个进程中执行多个任务的能力。相较于进程,线程之间的切换成本更低,...

    头歌Linux系统编程之c编程入门

    【头歌Linux系统编程之C编程入门】是一个关于在Linux环境下进行C语言编程学习的教程。这个教程覆盖了从基础的C语言编程到更高级的Linux系统编程技术,旨在帮助初学者逐步掌握在Linux系统中编写C程序的能力。 1. **...

    linux下C语言多线程编程实例

    在Linux环境下进行C语言多线程编程,可以利用POSIX线程库(pthread),这是一个跨平台的线程API,能够支持多种操作系统,包括Linux。在这个简单的实例中,我们将学习如何创建、同步和管理多线程。 首先,我们需要...

    鸿蒙_rtthread_Linux_Android驱动开发比较.7z

    "鸿蒙_rtthread_Linux_Android驱动开发比较"这一标题涉及了三个主要的关键词:鸿蒙、rtthread以及Linux和Android的驱动开发。鸿蒙是中国华为公司开发的操作系统,rtthread是一个开源的实时操作系统(RTOS),而Linux...

    Linux下C语言多线程编程实例

    Linux 下 C 语言多线程编程实例 Linux 下的多线程编程是一种非常重要的技术,在实际应用中有非常广泛的应用范围。多线程编程可以大大提高程序的执行效率和响应速度。但是,多线程编程也存在一些复杂性,例如线程...

    Linux多线程 C语言编程关于多线程

    ### Linux多线程 C语言编程知识点总结 #### 一、多线程与多进程编程概述 **多线程**的概念可以追溯到20世纪60年代,然而直到80年代中期,这一机制才被正式引入到Unix系统中。随着计算机硬件的发展及软件需求的增加...

    线程池Linux C语言简单版本

    本线程池采用C语言实现。包括以下内容 &gt; - thread_pool_create:创建线程池所需要的资源,包含不限于任务队列,子线程的创建。 &gt; - thread_pool_post:用于任务的发布,将执行任务存在任务队列中。 &gt; - thread_pool_...

    Linux下多线程计算圆周率 C语言

    Linux下多线程计算圆周率 C语言 //实现一个用多线程计算 π(圆周率)的程序。 #include #include #include #include #define N 50000//设定计算次数 #define NUM 2//设定线程数,经过反复实验,在装有1个双核...

    c语言linux系统编程入门

    ### C语言Linux系统编程入门知识点概述 #### 一、Linux下的C语言编程基础 ##### 1. 源程序的编译 - **GCC编译器**: 在Linux环境下,使用GCC(GNU Compiler Collection)作为主要的编译工具。GCC不仅支持C语言,还...

    linux_下多线程编程 C语言

    ### Linux 下 C 语言多线程编程实例解析与关键技术点 #### 一、多线程基础知识 在Linux环境下,利用C语言进行多线程编程是一种常见的技术手段,它能够有效地提高程序的并发处理能力,充分利用现代多核处理器的计算...

    Linux下线程池的C语言实现

    在深入探讨Linux下线程池的C语言实现之前,我们首先需要理解线程池的基本概念以及它在系统设计中的重要性。线程池是一种管理线程的机制,它预先创建一组固定数量的线程,等待任务的到来,从而避免了频繁创建和销毁...

    linuxC 语言开发方面的文档

    3. "linux cbasic.doc":可能是对Linux环境下C语言基础的介绍,包括变量、数据类型、流程控制语句等。 4. "thread handling.doc":讲述了线程管理,包括线程创建、同步、通信和线程安全问题。 5. "time.doc":可能...

    Linux Multiply thread programming(多线程编程初步)

    ### Linux下的多线程编程初步 #### 线程的概念 在探讨多线程编程之前,我们首先需要明确什么是线程。线程是程序中能够被操作系统调度并发执行的最小单位,它存在于进程之中,是进程的一个执行路径。与进程相比,...

    linux下c语言学习

    ### Linux下C语言编程知识点详解 #### 一、Linux C语言编程基础知识 ##### 源程序编译 在Linux环境中,使用C语言编程时最常用的编译器是GNU的`gcc`(GNU Compiler Collection)。通过`gcc`可以将C语言源代码编译成...

    linux-c-function.rar_Linux c++ Function_UNIX_linux C chm_linux c

    标签进一步确认了这个压缩包的内容,包括"linux_c++_function"、"unix_c_chm"等,表明不仅有C语言的函数,还可能涉及到C++的相关功能,特别是与系统交互的部分。"chm_linux_c++"表明C++部分也是以CHM格式提供的。 ...

Global site tag (gtag.js) - Google Analytics