`
andy136566
  • 浏览: 292179 次
  • 性别: 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

分享到:
评论

相关推荐

    c语言多进程多线程编程

    在计算机科学中,多进程和多线程是两种并发执行的方式,它们允许程序在同一时间处理多个任务,从而提高系统的效率和响应性。C语言作为一门底层且强大的编程语言,提供了丰富的系统调用接口来实现多进程和多线程编程...

    linux下c语言多线程网页爬虫源代码

    综上所述,"linux下c语言多线程网页爬虫源代码"这个项目涵盖了Linux环境下的C语言编程、网络编程、多线程技术以及网页爬虫的设计和实现。在实际操作中,开发者需要深入理解这些知识点,并结合具体需求来优化爬虫的...

    windows环境下C语言多线程实现网络编程,多人聊天室,[总结].pdf

    Windows 环境下 C 语言多线程实现网络编程多人聊天室总结 在 Windows 环境下实现多人聊天室需要使用 C 语言和多线程技术来实现网络编程。下面是关于这个主题的知识点总结: 第一部分:Windows Socket 编程 * 使用...

    c语言多进程多线程编程.pdf

    ### C语言多进程多线程编程相关知识点 #### 进程与线程的基本概念 - **进程**: 进程是一个程序在计算机上的一次执行活动。它是系统进行资源分配和调度的基本单位,拥有独立的地址空间和其他资源。进程之间相互独立...

    基于Linux C语言的多线程模拟智能家具服务器源代码

    在本项目中,我们关注的是一个基于Linux操作系统,使用C语言编写的多线程智能家具服务器的源代码。这个服务器程序旨在模拟智能家居环境中的设备控制,可能是为了学习、实验或开发目的。以下是对这个项目中涉及的技术...

    c#多线程编程实战(原书第二版)源码

    《C#多线程编程实战(原书第二版)源码》是一本深入探讨C#中多线程技术的专业书籍,其源码提供了丰富的实践示例,帮助读者掌握并发编程的核心概念和技术。在C#中,多线程是实现高性能、响应式应用程序的关键组成部分...

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

    在Linux环境下,C语言多线程编程是一种常见的并发处理方式,它允许程序同时执行多个任务,提高系统资源利用率和程序执行效率。本文将通过一个简单的实例来介绍如何在Linux下使用C语言进行多线程编程。 首先,我们要...

    AS400多线程编程

    初始线程是进程中的第一个线程,而辅线程是在多线程作业中创建的额外线程。WRKJOB + 20命令可用于查看线程状态和信息。 **1.3.1 线程分类** 线程分为用户线程和核心线程。在用户线程模型中,所有程序线程共享同一个...

    Linux 下多线程数字排序

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

    多线程编程一个简单示例轻松入门

    - `LPTHREAD_START_ROUTINE lpStartAddress`: 指向线程启动例程的地址,即线程开始执行的第一个函数。 - `LPVOID lpParameter`: 指向传递给新线程的参数的指针。 - `DWORD dwCreationFlags`: 控制线程创建的行为标志...

    C例子:多线程

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

    c.rar_多线程排序_多线程排序c_快速排序

    总之,"c.rar_多线程排序_多线程排序c_快速排序"这个压缩包中包含了一个C语言实现的多线程快速排序程序,它利用了并发处理以提高大规模数据排序的效率。通过对文件的分析和理解,我们可以学习到如何在C语言中使用多...

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

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

    多线程编程实现矩阵乘法

    矩阵乘法是将两个矩阵相乘得到一个新的矩阵,其规则是第一个矩阵的列数必须等于第二个矩阵的行数。假设我们有两个矩阵A(m×n)和B(n×p),它们的乘积C(m×p)的每个元素ci,j可以通过以下方式计算: \[ C[i][j] ...

    多线程编程指南

    - **第一章**:关于多线程编程,介绍了多线程的基本概念、术语以及设计技巧。 - **第二章**:线程管理,讨论了如何创建线程、配置线程属性及编写线程主体。 - **第三章**:RunLoops,深入探讨了RunLoops的工作原理...

    多线程数据采集器源码(C# 2.0)

    在IT领域,多线程数据采集器是一种高效的数据获取工具,尤其在大数据处理和网络爬虫项目中广泛应用。本源码基于C# 2.0编程语言,它展示了如何利用多线程技术来提高数据采集的效率。下面将详细介绍这个项目中的关键...

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

    Linux 多线程创建实验 本实验的目的是为了进一步掌握在 Linux 系统进行 C 语言编程的方法,进一步了解线程的概念,进一步理解进程与线程的概念,并掌握 C 语言线程创建的方法。 实验原理: 1. Pthread_create ...

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

    多线程编程是指在一个程序中同时运行多个执行路径的能力。这些执行路径称为“线程”。多线程可以提高程序的响应性和效率,特别是在处理复杂任务或需要等待外部资源(如网络请求)时。 ##### 1.2 线程术语 - **线程...

    C ++多线程编程实战姜佑译.rar

    《C++多线程编程实战》是一本深入探讨C++并发编程领域的专著,由姜佑译成中文。这本书旨在帮助读者理解并掌握C++中的多线程技术,从而能够利用这种技术创建高效的并行应用程序。C++作为一门强大且灵活的编程语言,其...

    sherlock实现多线程运行的方法pdf

    通过上述步骤,我们可以实现sherlock多线程运行的方法,一个软件,同时打开多个程序窗口,各自独立运行,互不干扰。这种方法可以满足多种工业自动化和机器视觉应用的需求。 结论 sherlock实现多线程运行的方法可以...

Global site tag (gtag.js) - Google Analytics