运行之前需要做一些配置:
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 Socket 编程、多线程编程和链表实现客户端连接管理。同时,需要注意线程安全和资源管理。 知识点: * Windows Socket 编程 * 多线程编程 * 网络编程 * 链表实现客户端连接管理 * ...
### C语言多线程编程教程 POSIX线程库 #### 多线程概念介绍 多线程编程是指在单个程序中同时执行多个线程的技术,其中每个线程都是程序执行的独立路径。在C语言中,多线程编程能够使开发者在不同的线程中并行执行...
### 基于UDP的Socket程序:多线程操作,Windows下的C语言实现 #### 概述 本文将深入分析一个使用C语言在Windows环境下编写的UDP Socket程序,该程序支持多线程并发操作,实现了数据包的发送与接收功能。通过对给定...
c语言多进程多线程编程c语言多进程多线程编程c语言多进程多线程编程c语言多进程多线程编程
在这个“c语言多线程操作”的项目中,开发者利用了VC++6.0的环境,这是一个早期的集成开发环境(IDE),它包含了Microsoft的Windows API,这个API提供了创建和管理线程的功能。 多线程是一种编程模型,允许一个应用...
总的来说,这个压缩包中的项目提供了关于C语言编程、异或加密算法和Windows平台下多线程技术的实际应用示例。对于想深入学习这些领域的开发者,这是一个很好的实践案例,可以从中学到如何将理论知识应用于实际编程中...
Windows 及 Linux 环境下的 C 语言多线程编程总结 本文总结了 Windows 及 Linux 环境下的 C 语言多线程编程的相关知识点。首先,讨论了在 Windows 环境下的 C 语言多线程编程,包括 `_beginthread()` 函数的使用、...
本文将深入探讨如何在Windows操作系统下,利用Microsoft Visual Studio 2015(VS2015)进行C语言多线程程序的开发。我们将关注三个核心部分:线程创建、线程同步以及线程通信。 首先,我们要引入Windows API中的...
在C语言中,多线程编程是实现并发执行任务的一种方式。这允许程序同时执行多个独立的任务,提高系统效率和响应性。在这个“C语言使用多线程例子”中,我们将探讨如何使用Windows API中的`CreateThread`函数来创建...
6. 多线程编程: - CreateThread函数用于创建新线程,文档中展示了如何为每个接受的客户端连接创建一个线程。 - 线程函数ThreadProc接受一个void*类型的参数,这里是一个socket句柄,用于从特定客户端接收和发送...
总的来说,通过这个压缩包,你可以了解到C语言在Windows环境下实现多线程编程的方法,以及如何使用Mutex、Semaphore和Event来实现线程间的同步和通信。这对于提升你的Windows系统级编程能力,尤其是理解和处理并发...
此实例在windows 10系统上可以成功运行,可以修改一下,在linux上也可以运行,思路都是一样的。 说明:这个是个图书馆案例,默认100个座位,生产者与消费者各2个线程 (修改:加锁)
Linux下C语言应用编程》深入浅出地讲解了Linux下C应用程序开发所需的基本工具、知识和技巧,主要包括:开发工具的使用和技巧、文件I/O编程、多进程编程、进程间通信、多线程编程、网络编程等内容。可以让读者轻松、...
在Windows 10环境下使用Visual Studio 2019(VS2019)进行C语言的多线程编程,需要进行一系列配置步骤。这里主要介绍如何配置VS2019以便支持C语言的多线程功能,以及解决在配置过程中可能遇到的问题。 首先,我们...
#### 在IBM大型机的z/OS环境下的C语言多任务编程原理 本文旨在深入探讨IBM大型机环境下(特别是z/OS操作系统)利用C语言进行多任务编程的技术细节与实践方法。在IBM大型机上运行的z/OS系统为开发人员提供了一个强大...
在Windows环境下,使用C语言进行网络编程,尤其是构建多人...综上所述,这个C语言程序展示了如何在Windows环境下,利用Winsock库创建一个简单的TCP服务器,支持多线程处理客户端连接,实现一个基本的多人聊天室功能。
8. **多线程编程**:了解如何创建和管理线程,实现并发执行,提高程序性能。 9. **Winsock网络编程**:如果书中有涉及,会讲解如何使用Windows Socket API进行网络通信。 10. **实战项目**:可能包含一些实践项目...
7. **性能优化**:在实际应用中,可能需要考虑性能优化,例如使用非阻塞I/O模式,避免在网络繁忙时造成程序卡死,或者使用多线程处理发送和接收,提高并发能力。 通过理解和实践这些知识点,你将能够构建起一个基本...
本文主要介绍了使用C语言实现一个多线程的端口扫描工具,该工具基于Windows平台下的Winsock2库进行网络通信,利用多线程技术来提高扫描效率。在网络安全领域,端口扫描是一项基本且重要的技术手段,可用于发现目标...
总之,Windows下的C语言网络编程需要掌握Windows API,尤其是Winsock库,同时理解Windows编程模型和句柄机制。通过实践和学习,你可以创建复杂的网络应用程序,如服务器、客户端或者多线程的网络应用。