C语言多线程编程(windows下)【用pthread】

http://jefry.iteye.com/blog/1102692

运行之前需要做一些配置: 

1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可) 
   http://sourceware.org/pthreads-win32/ ,解压到一个目录。 
2.找到include和lib文件夹,下面分别把它们添加到VC++6.0的头文件路径和静态链接库路径下面: 
   a).Tools->Options,选择Directory页面,然后在Show directories for:中选择Include files(默认)     在Directories中添加include的路径。在Show directories for:中选择Library files, 
    在Directories中添加lib的路径。 
   b).Project->Settings,选择Link页面,然后将lib下的*.lib文件添加到Object/library Modules, 
     各lib文件以空格隔开。 
   c).将lib下的*.dll文件复制到工程目录下,即根目录。  

3.代码 
C代码   收藏代码
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <pthread.h>  
  4. #include <windows.h>  
  5.   
  6. int  piao = 100;  
  7.   
  8. pthread_mutex_t mut;  
  9.    
  10. void* tprocess1(void* args){  
  11.    int a = 0;  
  12.        while(true){  
  13.            pthread_mutex_lock(&mut);  
  14.            if(piao>0){  
  15.             Sleep(1);  
  16.             piao--;  
  17.             printf("窗口1----------------还剩%d张票\n",piao);  
  18.            }else{  
  19.             a = 1;  
  20.            }  
  21.           pthread_mutex_unlock(&mut);  
  22.            if(a == 1) {  
  23.             break;  
  24.            }  
  25.         }    
  26.           
  27.     
  28.        return NULL;  
  29. }  
  30.   
  31. void* tprocess2(void* args){  
  32.      int a = 0;  
  33.        while(true){  
  34.            pthread_mutex_lock(&mut);  
  35.            if(piao>0){  
  36.             Sleep(1);  
  37.            piao--;  
  38.         printf("窗口2----------------还剩%d张票\n",piao);  
  39.            }else{  
  40.             a = 1;  
  41.            }  
  42.           pthread_mutex_unlock(&mut);  
  43.            if(a == 1) {  
  44.             break;  
  45.            }  
  46.         }    
  47.           
  48.     
  49.        return NULL;  
  50. }  
  51.   
  52. void* tprocess3(void* args){  
  53.    int a = 0;  
  54.        while(true){  
  55.            pthread_mutex_lock(&mut);  
  56.            if(piao>0){  
  57.        Sleep(1);  
  58.              piao--;  
  59.          
  60.         printf("窗口3----------------还剩%d张票\n",piao);  
  61.            }else{  
  62.             a = 1;  
  63.            }  
  64.           pthread_mutex_unlock(&mut);  
  65.            if(a == 1) {  
  66.             break;  
  67.            }  
  68.         }    
  69.           
  70.     
  71.        return NULL;  
  72. }  
  73.   
  74. void* tprocess4(void* args){  
  75.        int a = 0;  
  76.        while(true){  
  77.            pthread_mutex_lock(&mut);  
  78.            if(piao>0){  
  79.        Sleep(1);  
  80.         
  81.                    piao--;  
  82.          
  83.         printf("窗口4----------------还剩%d张票\n",piao);  
  84.            }else{  
  85.             a = 1;  
  86.            }  
  87.           pthread_mutex_unlock(&mut);  
  88.            if(a == 1) {  
  89.             break;  
  90.            }  
  91.         }    
  92.           
  93.     
  94.        return NULL;  
  95. }  
  96.   
  97. int main(){  
  98.   pthread_mutex_init(&mut,NULL);  
  99.   pthread_t t1;  
  100.   pthread_t t2;  
  101.   pthread_t t3;  
  102.   pthread_t t4;  
  103.   pthread_create(&t4,NULL,tprocess4,NULL);  
  104.   pthread_create(&t1,NULL,tprocess1,NULL);  
  105.   pthread_create(&t2,NULL,tprocess2,NULL);  
  106.   pthread_create(&t3,NULL,tprocess3,NULL);  
  107.   Sleep(5000);  
  108.   return 0;  
  109. }  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值