`
andy136566
  • 浏览: 285188 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

第一个c多线程

 
阅读更多
#include <stdio.h>
#include <pthread.h>
#include <sys/time.h>
#define MAX 10

pthread_t thread[MAX];
pthread_mutex_t mut;
long number=0;
int i;

void func()
{
	int p=10000000;
	while(p--){}
}

void *thread_func()
{                
        pthread_mutex_lock(&mut);
		struct timeval tvStart,tvEnd;
		gettimeofday(&tvStart,NULL);
		func();
		gettimeofday(&tvEnd,NULL);
		if(((tvEnd.tv_sec-tvStart.tv_sec)*1000+(tvEnd.tv_usec-tvStart.tv_usec)/1000)>number)
		{
			number = (tvEnd.tv_sec-tvStart.tv_sec)*1000000+(tvEnd.tv_usec-tvStart.tv_usec);
		}
		printf("每次的时间: %ld微秒\n",number);
                pthread_mutex_unlock(&mut);
                sleep(2);
        pthread_exit(NULL);
}

void thread_create(void)
{
	for(i=0;i<MAX;i++)
	{
		if(pthread_create(&thread[i], NULL, thread_func, NULL))       //comment2
                	printf("线程%d创建失败!\n",i);
        	else
               		printf("线程%d被创建\n",i);
	}
}

void thread_wait(void)
{
	for(i=0;i<MAX;i++)
	{
               	pthread_join(thread[i],NULL);
               	printf("线程%d已经结束\n",i);
	}
}

int main()
{
        //用默认属性初始化互斥锁
        pthread_mutex_init(&mut,NULL);

        printf("主函数创建线程\n");
        thread_create();
        printf("主函数正在等待线程完成\n");
        thread_wait();
	printf("time costs:%ld\n微秒",number);
        return 0;
}

 

改成c++

 

void thread_wait()

 

void *thread_func(void *argv)

c改成这样,gcc编译也ok的

无类型的指针,它的类型将由被赋予的值来决定,如果赋予int 型变量的地址或指针,它就是int型。 

第一个c多线程,参考:

http://www.oschina.net/code/snippet_12_366?from=rss

分享到:
评论

相关推荐

    Linux 下多线程数字排序

    父进程创建三个子线程,第一个子线程对数组的前半部分进行选择排序,第二个子进程对数组的后半部分进行选择排序,第三个子线程对两个已经排序好的数组部分进行归并排序,最后当所有子线程结束之后,父进程输出排序好...

    C例子:多线程

    该程序是我写的博客“一起talk C栗子吧(第一百二十二回:C语言实例--多线程)”的配套程序,共享给大家使用

    实验二:Linux多线程创建.docx

    操作系统的第二个实验,Linux多线程创建

    多线程编程 第一章 关于多线程编程

    第一章 关于多线程编程 第二章 线程管理

    C面向对象多线程编程

    第1章介绍了用于构建面向对象程序的不同类型C 组件,以及如何使用这些组件来构建多线程架构。第2、3、4章简要介绍进程、线程、多任务处理、多线程化、规划以及线程优先权的概念。第5章讨论进程间和线程间通信。第6章...

    多线程 打印1-99,100-199

    1. 实现一个类ThreadMock(模拟线程),用来模仿Thread类,该类具有以下特征: a) Public class ThreadMock implents ...例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2。。。。。。。。依此类推。

    Windows环境下的多线程编程原理与应用

    本书共分9章:第1章介绍多线程的概念和与Windows操作系统一些有关的知识;第2章介绍面向对象和C十、语言的 此知识;第3章介绍线程创建的各种方法,包括利用Wm32 API创建、利用运行时库函数创建和利用MFC中的全局函数...

    java多线程设计模式详解(PDF及源码)

    第1章 Single Threaded Execution——能通过这座桥的,只有一个人 第2章 Immutable——想破坏它也没办法 第3章 Guarded Suspension——要等到我准备好喔 第4章 Balking——不需要的话,就算了吧 第5章 Producer-...

    Windows多线程编程技术与实例.pdf

    本书每一章都从简单的多线程实例出发逐渐深入,紧紧围绕应用程序实例,向读者展示了利用多线程技术来编写高效、友好的Windows应用程序的方法,并对常用的Win32线程函数进行了深入详细的说明。本书共分8章,第l章介绍...

    图像处理中使用多线程及图像分块实现加速运算

    对于一副图像,比如1000*800分辨率,我们在处理时,通常思路是从第1个像素开始,一直计算到最后一个像素。其实,目前不论手机还是个人电脑,处理器都是多核。那么完全可以将整副图像分成若干块,比如cpu为4核处理器...

    CESock类 多线程实现简单易用的套接字

    多线程方式实现简单易用的套接字,使用TCP协议 阻塞方式. 最大发送数据字节数不宜超过1KB. 同时实现了客户端及服务器端功能,可接收及发送数据. 版本: v1.0.0 第一版本发布时间: 20100823 第一作者: Jef ...

    windows多线程编程及例程

    windows多线程编程及配套例程,很小一篇文章(31页),配套9个例程(差第四个例程)

    java-多线程下载器(支持断点续传、线程加减)包含源码和可运行jar包 第二版

    2、支持多任务多线程同时下载; 3、每个任务的线程数由用户在新建任务时自定义,缺省为5个线程; 4、任务下载过程中可以点击“线程+”或“线程-”即时增减线程; 5、选择任务,可以在任务信息栏中查看任务下载的信息...

    吕鑫:【C++语法与数据结构第25天】【第3堂课】多线程与TCP通讯流程

    1、讲解和演示通过多线程技术,实现接收端和发送端在同一进程内同时运行; 2、讲解和演示TCP通讯流程;

    Delphi多线程编程之三 同步读写全局数据

    如果把初始化数组的代码放在临界区内,另一个线程在第一个线程处理完之前是不会被执行的。 使用临界区的步骤: 1、先声明一个全局变量类型为TRTLCriticalSection; 2、在线程Create()前调用...

    C例子:信号量同步线程

    该程序是我写的博客“一起talk C栗子吧(第一百一十四回:C语言实例--线程同步之信号量二)”的配套程序,共享给大家使用

    multithreaded-sorting:我的操作系统课程用C语言编写的多线程排序程序

    #multithreaded-sorting该程序是OS教科书中第4章编程项目2的解决方案。 该程序在命令行上输入... 要编译程序,请使用命令“ gcc part1.c -pthread”。要运行该命令,请在命令行上运行带有数据文件名的可执行文件。

    CreateThread创建多线程与单线程比较

    仿多线程的效果一般有2种办法:第一种是通过定时器;第二种是启动多线程,不同模式下启动函数不同,mfc与API与WIN32下面注意点也是有区别的! VC启动一个新线程的三种方法,有需要的朋友可以参考下。 第一种...

Global site tag (gtag.js) - Google Analytics