• C语言使用pthread多线程编程(windows系统)一


    运行之前需要做一些配置: 
    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代码 :
    #include <stdio.h>  
    #include <stdlib.h>  
    #include <pthread.h>  
    #include <windows.h>  
      
    int  piao = 100;  
      
    pthread_mutex_t mut;  
       
    void* tprocess1(void* args){  
       int a = 0;  
           while(true){  
               pthread_mutex_lock(&mut);  
               if(piao>0){  
                Sleep(1);  
                piao--;  
                printf("窗口1----------------还剩%d张票
    ",piao);  
               }else{  
                a = 1;  
               }  
              pthread_mutex_unlock(&mut);  
               if(a == 1) {  
                break;  
               }  
            }    
              
        
           return NULL;  
    }  
      
    void* tprocess2(void* args){  
         int a = 0;  
           while(true){  
               pthread_mutex_lock(&mut);  
               if(piao>0){  
                Sleep(1);  
               piao--;  
            printf("窗口2----------------还剩%d张票
    ",piao);  
               }else{  
                a = 1;  
               }  
              pthread_mutex_unlock(&mut);  
               if(a == 1) {  
                break;  
               }  
            }    
              
        
           return NULL;  
    }  
      
    void* tprocess3(void* args){  
       int a = 0;  
           while(true){  
               pthread_mutex_lock(&mut);  
               if(piao>0){  
           Sleep(1);  
                 piao--;  
             
            printf("窗口3----------------还剩%d张票
    ",piao);  
               }else{  
                a = 1;  
               }  
              pthread_mutex_unlock(&mut);  
               if(a == 1) {  
                break;  
               }  
            }    
              
        
           return NULL;  
    }  
      
    void* tprocess4(void* args){  
           int a = 0;  
           while(true){  
               pthread_mutex_lock(&mut);  
               if(piao>0){  
           Sleep(1);  
            
                       piao--;  
             
            printf("窗口4----------------还剩%d张票
    ",piao);  
               }else{  
                a = 1;  
               }  
              pthread_mutex_unlock(&mut);  
               if(a == 1) {  
                break;  
               }  
            }    
              
        
           return NULL;  
    }  
      
    int main(){  
      pthread_mutex_init(&mut,NULL);  
      pthread_t t1;  
      pthread_t t2;  
      pthread_t t3;  
      pthread_t t4;  
      pthread_create(&t4,NULL,tprocess4,NULL);  
      pthread_create(&t1,NULL,tprocess1,NULL);  
      pthread_create(&t2,NULL,tprocess2,NULL);  
      pthread_create(&t3,NULL,tprocess3,NULL);  
      Sleep(5000);  
      return 0;  
    }  

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

  • 相关阅读:
    OutputStream之flush() · 李大白写点儿啥
    AQS总结
    深入理解JavaScript中的this关键字
    Cookie
    【翻译】Ext JS 5的平板支持
    【翻译】在Sencha Touch中创建离线/在线代理
    OpenCV——PS 图层混合算法 (三)
    OpenCV——PS 图层混合算法 (二)
    【翻译】在Ext JS和Sencha Touch中创建自定义布局
    OpenCV——PS 图层混合算法(一)
  • 原文地址:https://www.cnblogs.com/mq0036/p/3710457.html
Copyright © 2020-2023  润新知