`
jakielong
  • 浏览: 229307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对前一个Linux多线程编程实例的修改

阅读更多
#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#include <unistd.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void *thread1(void *)
{
        printf ("thread1 : I'm thread 1\n");
        for (i = 0; i < MAX; i++)
        {
        	sleep(2);
                printf("thread1 : number = %d\n",number);
                pthread_mutex_lock(&mut);
                        number++;
                pthread_mutex_unlock(&mut);

        }
        printf("thread1 :the main function is waiting for me?\n");
        pthread_exit(NULL);
}
void *thread2(void *)
{
        printf("thread2 : I'm thread 2\n");
        for (i = 0; i < MAX; i++)
        {
        	sleep(3);
                printf("thread2 : number = %d\n",number);
                pthread_mutex_lock(&mut);
                        number++;
                pthread_mutex_unlock(&mut);
        }
        printf("thread2 :the main function is waiting for me? \n");
        pthread_exit(NULL);
}
void thread_create(void)
{
        int temp;
        memset(&thread, 0, sizeof(thread));          //comment1
        /*创建线程*/
        if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)       //comment2
                printf("Thread 1 fail to create!\n");
        else
                printf("Thread 1 created!\n");
        if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)  //comment3
                printf("Thread 2 fail to create!");
        else
                printf("Thread 2 created!\n");
}
void thread_wait(void)
{
        /*等待线程结束*/
        if(thread[0] !=0) {                   //comment4
                pthread_join(thread[0],NULL);
                printf("Thread 1 completed\n");
        }
        if(thread[1] !=0) {                //comment5
                pthread_join(thread[1],NULL);
                printf("Thread 2 completed.\n");
        }
}
int main()
{
        /*用默认属性初始化互斥锁*/
        pthread_mutex_init(&mut,NULL);
        printf("Main function,creating thread...\n");
        thread_create();
        printf("Main function,waiting for thread end....\n");
        thread_wait();
        return 0;
}

 运行结果:



 

  • 大小: 13.8 KB
分享到:
评论

相关推荐

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

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

    linux epoll多线程编程实例,在Linux下编译通过

    具体到"Linux epoll多线程编程实例",在MyLinuxThread这个项目中,我们可以预见到以下关键部分: 1. **线程池设计**:可能采用了线程池来管理多个工作线程,线程池中的线程负责处理来自epoll的事件。 2. **事件...

    linux epoll多线程编程 例子

    《MyLinuxThread.txt》文件可能包含了一个关于如何在Linux上使用epoll和线程池进行编程的实例,这将有助于加深对这一主题的理解。 总结来说,Linux的epoll多线程编程能够有效地提升高并发场景下的系统性能,通过...

    linux_code.rar_linux 多线程_linux 线程_多线程编程

    "linux_code.rar"这个压缩包包含了一些关于Linux多线程编程的源码示例,这对于初学者来说是一份宝贵的教育资源。 1. **线程概念**: 线程是操作系统分配处理器时间的基本单元,它是程序中的执行流。与进程相比,...

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

    在Linux环境下进行C语言多线程编程,可以利用POSIX线程库pthread,它提供了创建、同步和管理线程的功能。以下将详细讲解本实例中涉及的多线程编程概念和关键技术。 首先,多线程是指在一个进程中创建多个执行线程,...

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

    在Linux环境下,C语言多线程编程是一种常见的技术,用于编写能够同时执行多个任务的程序。这篇文档通过一个简单的实例展示了如何在C语言中创建和管理线程。下面我们将详细讨论这个实例中的关键知识点。 首先,多...

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

    本文将通过一个简单的实例来介绍如何在Linux下使用C语言进行多线程编程。 首先,我们要引入必要的头文件,如`&lt;pthread.h&gt;`用于线程操作,`&lt;stdio.h&gt;`用于输入输出,`&lt;sys/time.h&gt;`用于时间操作,`&lt;string.h&gt;`用于...

    C语言多线程编程实例.docx

    总的来说,这个C语言多线程编程实例展示了如何在Linux环境下创建、同步和管理线程,以及如何利用互斥锁解决并发访问共享资源时的冲突问题。这个基本的实例可以作为进一步学习多线程编程的基础,通过修改和扩展,可以...

    嵌入式Linux应用程序开发详解第9章(多线程编程)_linux_

    在嵌入式Linux系统中,应用程序的开发是一个关键环节,特别是在涉及多线程编程时,开发者需要深入理解操作系统内核、内存管理以及并发执行的概念。本章“嵌入式Linux应用程序开发详解第9章(多线程编程)”将为我们...

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

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

    linux上实现多进程和多线程实现同步互斥(源代码)

    总结,Linux上的多进程和多线程编程涉及复杂的同步互斥操作,开发者需要理解各种同步机制,根据具体需求选择合适的方法。通过阅读和学习提供的源代码,可以加深对这些概念的理解,提升实际开发能力。

    C语言多线程编程实例[借鉴].pdf

    在C语言多线程编程中,线程同步是控制多个线程在执行时,按照一定的顺序来访问某些共享资源,避免多个线程同时对同一个资源进行操作,造成资源的不一致或竞争条件。在给定文件中,我们看到了多线程编程的实例,包含...

    C语言多线程编程实例[参考].pdf

    在C语言中,多线程编程是通过POSIX线程库(pthread)来实现的,它允许在一个进程中同时执行多个线程。在这个实例中,我们看到了如何在Linux环境下使用C语言创建和管理线程。 首先,引入了必要的头文件,如`...

    Linux下的多线程编程实例解析

    本篇文章将深入探讨Linux环境下多线程编程的基础知识和实例解析。 线程作为轻量级进程,与传统的进程相比,其主要优势在于资源利用率高和通信效率高。创建线程比创建进程所需的资源少得多,因为线程共享同一进程的...

    Linux环境下多线程编程及信号灯同步互斥应用指南

    内容概要:本文档提供了一份详细的实验指导书,介绍了Linux下多线程编程的技术及其应用场景。文档首先概述了创建、终止、回收、分离线程的方式,重点讲解了 pthread 库中相关函数的使用方法。此外,还探讨了如何使用...

    linux c多线程编程实例代码

    在Linux系统中,C语言进行多线程编程...这个实例代码提供了一个基础的多线程编程模型,展示了如何在Linux环境下使用C语言实现线程的创建、同步以及销毁。在实际应用中,多线程编程可以用于并发处理任务,提高系统效率。

    Linux网络编程(四)——epoll+多线程实现简单的聊天(linux 服务器端 windows客户端)

    在本篇中,我们将深入探讨如何使用Linux网络编程技术,特别是epoll和多线程机制,来构建一个简单的跨平台聊天应用。这个应用涉及到Linux服务器端和Windows客户端的交互,让我们逐一解析其中的关键知识点。 首先,`...

    linux多线程

    本文将深入探讨Linux环境下的C语言多线程编程,并通过一个具体的实例来演示如何创建和管理线程。 首先,我们要了解在Linux中,多线程的实现依赖于POSIX线程库,简称pthreads。`&lt;pthread.h&gt;`头文件包含了所有关于...

    C++多线程编程

    为了更好地抽象出多线程编程的核心概念,可以尝试定义一个通用的线程类,该类可以在不同的操作系统平台上工作。 #### 四、线程的生命周期与控制 了解了线程的基本概念后,我们还需要掌握如何控制线程的生命周期,...

Global site tag (gtag.js) - Google Analytics