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张票\n",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张票\n",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张票\n",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张票\n",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

posted on   jack_Meng  阅读(9398)  评论(0编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩