`

C语言多线程编程(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.代码
#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;
}
分享到:
评论

相关推荐

    windows环境下C语言多线程实现网络编程,多人聊天室,[总结].pdf

    实现多人聊天室需要使用 Windows Socket 编程、多线程编程和链表实现客户端连接管理。同时,需要注意线程安全和资源管理。 知识点: * Windows Socket 编程 * 多线程编程 * 网络编程 * 链表实现客户端连接管理 * ...

    C语言多线程编程教程 POSIX线程库

    ### C语言多线程编程教程 POSIX线程库 #### 多线程概念介绍 多线程编程是指在单个程序中同时执行多个线程的技术,其中每个线程都是程序执行的独立路径。在C语言中,多线程编程能够使开发者在不同的线程中并行执行...

    基于UDP的socket程序,多线程操作,windows下C语言

    ### 基于UDP的Socket程序:多线程操作,Windows下的C语言实现 #### 概述 本文将深入分析一个使用C语言在Windows环境下编写的UDP Socket程序,该程序支持多线程并发操作,实现了数据包的发送与接收功能。通过对给定...

    c语言多进程多线程编程

    c语言多进程多线程编程c语言多进程多线程编程c语言多进程多线程编程c语言多进程多线程编程

    c语言多线程操作

    在这个“c语言多线程操作”的项目中,开发者利用了VC++6.0的环境,这是一个早期的集成开发环境(IDE),它包含了Microsoft的Windows API,这个API提供了创建和管理线程的功能。 多线程是一种编程模型,允许一个应用...

    c语言 多线程文件加密 windosw平台.zip

    总的来说,这个压缩包中的项目提供了关于C语言编程、异或加密算法和Windows平台下多线程技术的实际应用示例。对于想深入学习这些领域的开发者,这是一个很好的实践案例,可以从中学到如何将理论知识应用于实际编程中...

    【个人总结系列-48】Windows及Linux环境下的C语言多线程编程总结.docx

    Windows 及 Linux 环境下的 C 语言多线程编程总结 本文总结了 Windows 及 Linux 环境下的 C 语言多线程编程的相关知识点。首先,讨论了在 Windows 环境下的 C 语言多线程编程,包括 `_beginthread()` 函数的使用、...

    C语言多线程实现

    本文将深入探讨如何在Windows操作系统下,利用Microsoft Visual Studio 2015(VS2015)进行C语言多线程程序的开发。我们将关注三个核心部分:线程创建、线程同步以及线程通信。 首先,我们要引入Windows API中的...

    C语言使用多线程例子

    在C语言中,多线程编程是实现并发执行任务的一种方式。这允许程序同时执行多个独立的任务,提高系统效率和响应性。在这个“C语言使用多线程例子”中,我们将探讨如何使用Windows API中的`CreateThread`函数来创建...

    windows环境下C语言多线程实现网络编程,多人聊天室,.pdf

    6. 多线程编程: - CreateThread函数用于创建新线程,文档中展示了如何为每个接受的客户端连接创建一个线程。 - 线程函数ThreadProc接受一个void*类型的参数,这里是一个socket句柄,用于从特定客户端接收和发送...

    Muti-thread-win32.rar_c语言多线程_event_多线程C语言

    总的来说,通过这个压缩包,你可以了解到C语言在Windows环境下实现多线程编程的方法,以及如何使用Mutex、Semaphore和Event来实现线程间的同步和通信。这对于提升你的Windows系统级编程能力,尤其是理解和处理并发...

    生产者与消费者多线程编程(图书馆案例)(加锁)

    此实例在windows 10系统上可以成功运行,可以修改一下,在linux上也可以运行,思路都是一样的。 说明:这个是个图书馆案例,默认100个座位,生产者与消费者各2个线程 (修改:加锁)

    Linux下C语言应用编程

    Linux下C语言应用编程》深入浅出地讲解了Linux下C应用程序开发所需的基本工具、知识和技巧,主要包括:开发工具的使用和技巧、文件I/O编程、多进程编程、进程间通信、多线程编程、网络编程等内容。可以让读者轻松、...

    WIN10_VS2019_配置_多线程_C语言.docx

    在Windows 10环境下使用Visual Studio 2019(VS2019)进行C语言的多线程编程,需要进行一系列配置步骤。这里主要介绍如何配置VS2019以便支持C语言的多线程功能,以及解决在配置过程中可能遇到的问题。 首先,我们...

    大型机上的C语言多任务编程

    #### 在IBM大型机的z/OS环境下的C语言多任务编程原理 本文旨在深入探讨IBM大型机环境下(特别是z/OS操作系统)利用C语言进行多任务编程的技术细节与实践方法。在IBM大型机上运行的z/OS系统为开发人员提供了一个强大...

    windows环境下C语言多线程实现网络编程,多人聊天室,[收集].pdf

    在Windows环境下,使用C语言进行网络编程,尤其是构建多人...综上所述,这个C语言程序展示了如何在Windows环境下,利用Winsock库创建一个简单的TCP服务器,支持多线程处理客户端连接,实现一个基本的多人聊天室功能。

    Windows程序设计(C语言)

    8. **多线程编程**:了解如何创建和管理线程,实现并发执行,提高程序性能。 9. **Winsock网络编程**:如果书中有涉及,会讲解如何使用Windows Socket API进行网络通信。 10. **实战项目**:可能包含一些实践项目...

    windows网络编程,udp多播例程,基于C语言

    7. **性能优化**:在实际应用中,可能需要考虑性能优化,例如使用非阻塞I/O模式,避免在网络繁忙时造成程序卡死,或者使用多线程处理发送和接收,提高并发能力。 通过理解和实践这些知识点,你将能够构建起一个基本...

    多线程的端口扫描/C语言、套接字开发

    本文主要介绍了使用C语言实现一个多线程的端口扫描工具,该工具基于Windows平台下的Winsock2库进行网络通信,利用多线程技术来提高扫描效率。在网络安全领域,端口扫描是一项基本且重要的技术手段,可用于发现目标...

    Windows下C语言网络编程快速入门

    总之,Windows下的C语言网络编程需要掌握Windows API,尤其是Winsock库,同时理解Windows编程模型和句柄机制。通过实践和学习,你可以创建复杂的网络应用程序,如服务器、客户端或者多线程的网络应用。

Global site tag (gtag.js) - Google Analytics