`

Linux c的多线程编程实例

 
阅读更多

通过创建两个线程来实现对一个数的递加。
或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。

  1. #include <pthread.h>   
  2. #include <stdio.h>   
  3. #include <sys/time.h>   
  4. #include <string.h>   
  5. #include <unistd.h>   
  6. #define MAX 10   
  7. pthread_t thread[2];   
  8. pthread_mutex_t mut;   
  9. int number=0, i;   
  10. void *thread1(void *)   
  11. {   
  12.         printf ("thread1 : I'm thread 1\n");   
  13.         for (i = 0; i < MAX; i++)   
  14.         {   
  15.                 printf("thread1 : number = %d\n",number);   
  16.                 pthread_mutex_lock(&mut);   
  17.                         number++;   
  18.                 pthread_mutex_unlock(&mut);   
  19.                 sleep(2);   
  20.         }   
  21.         printf("thread1 :the main function is waiting for me?\n");   
  22.         pthread_exit(NULL);   
  23. }   
  24. void *thread2(void *)   
  25. {   
  26.         printf("thread2 : I'm thread 2\n");   
  27.         for (i = 0; i < MAX; i++)   
  28.         {   
  29.                 printf("thread2 : number = %d\n",number);   
  30.                 pthread_mutex_lock(&mut);   
  31.                         number++;   
  32.                 pthread_mutex_unlock(&mut);   
  33.                 sleep(3);   
  34.         }   
  35.         printf("thread2 :the main function is waiting for me? \n");   
  36.         pthread_exit(NULL);   
  37. }   
  38. void thread_create(void)   
  39. {   
  40.         int temp;   
  41.         memset(&thread, 0, sizeof(thread));          //comment1   
  42.         /*Create thread*/  
  43.         if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)       //comment2   
  44.                 printf("Thread 1 fail to create!\n");   
  45.         else  
  46.                 printf("Thread 1 created!\n");   
  47.         if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)  //comment3   
  48.                 printf("Thread 2 fail to create!");   
  49.         else  
  50.                 printf("Thread 2 created!\n");   
  51. }   
  52. void thread_wait(void)   
  53. {   
  54.         /*Wait thread end*/  
  55.         if(thread[0] !=0) {                   //comment4   
  56.                 pthread_join(thread[0],NULL);   
  57.                 printf("Thread 1 completed\n");   
  58.         }   
  59.         if(thread[1] !=0) {                //comment5   
  60.                 pthread_join(thread[1],NULL);   
  61.                 printf("Thread 2 completed.\n");   
  62.         }   
  63. }   
  64. int main()   
  65. {   
  66.         /*init mutex*/  
  67.         pthread_mutex_init(&mut,NULL);   
  68.         printf("Main function,creating thread...\n");   
  69.         thread_create();   
  70.         printf("Main function,waiting for thread end....\n");   
  71.         thread_wait();   
  72.         return 0;   
  73. }

 

 

我是主函数哦,我正在创建线程,呵呵
线程1被创建
线程2被创建
我是主函数哦,我正在等待线程完成任务阿,呵呵
thread1 : I'm thread 1
thread1 : number = 0
thread2 : I'm thread 2
thread2 : number = 1
thread1 : number = 2
thread2 : number = 3
thread1 : number = 4
thread2 : number = 5
thread1 : number = 6
thread1 : number = 7
thread2 : number = 8
thread1 : number = 9
thread2 : number = 10
thread1 :主函数在等我完成任务吗?
线程1已经结束
thread2 :主函数在等我完成任务吗?
线程2已经结束

 

分享到:
评论

相关推荐

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

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

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

    在Linux环境下进行C语言多线程编程,可以利用POSIX线程库,也称为pthread库。这个库提供了创建、同步和管理线程的一系列接口,使得开发者能够在单个进程中同时执行多个任务,从而提高程序的并行性。下面将详细探讨多...

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

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

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

    标题中的“C语言多线程编程实例”直接指出了文档的主题内容,即围绕C语言编程中多线程编程技术的实例讲解。多线程是编程中的一项关键技术,能够允许程序同时执行多个线程,提高程序的运行效率和响应速度。 描述部分...

    linux C 多线程编程典型实例

    本实例集主要针对Linux环境下的C语言多线程编程,旨在帮助开发者深入理解和实践多线程的创建、同步、通信以及管理等关键概念。 1. **线程创建**: 在Linux中,多线程通常通过POSIX线程库(pthread)实现。`pthread...

    linux下C语言多线程编程实例[归纳].pdf

    linux下C语言多线程编程实例[归纳].pdf

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

    通过这个简单的实例,我们可以了解到Linux下C语言多线程编程的基本框架,包括线程的创建、同步和结束。然而,在实际应用中,还需要考虑更复杂的情况,如线程优先级、线程局部存储、信号量、条件变量等高级同步机制。...

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

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

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

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

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

    本文介绍了在Linux环境下进行多进程和多线程编程的基础知识。多进程编程主要涉及fork()函数的使用,而多线程编程则基于pthread线程库。通过理解这些基础知识,开发人员能够更好地利用现代操作系统提供的并发能力,...

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

    【Linux下的多线程编程实例解析】 在计算机操作系统中,多线程编程是实现并行处理和提高系统效率的一种重要技术。Linux系统同样支持多线程编程,这使得开发者能够利用这一特性创建高效的、响应迅速的应用程序。多...

    linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1、多进程编程 #include #include #include &lt;unistd&gt; int main() { pid_t child_pid; /* 创建一个子进程 */ child_pid = fork(); if(child_pid == 0) { printf...

    Linux下的C语言多线程编程.doc

    本文档主要介绍了Linux下的C语言多线程编程,包括多线程的概念、优点、实现方法和实例代码。多线程技术可以提高应用程序的响应速度、使多CPU系统更加有效、改善程序结构等。 多线程的概念 多线程是一种多任务操作...

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

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

Global site tag (gtag.js) - Google Analytics