#include<windows.h>
#include<stdio.h>
#include<string.h>
//#include <afxmt.h>
#define T_MAX 100
int ticket;
CRITICAL_SECTION CriticalSection;
/* //售票线程
DWORD WINAPI SaleThread(LPVOID lp)
{
int n = (int) lp;
while (ticket > 0)
{
printf("SaleThread%d sell %dth ticket\n", n, T_MAX-ticket+1);
ticket--;
Sleep(500);
}
return 0;
} void MyThread()
{
HANDLE handle1,handle2,handle3,handle4,handle5;
//5个售票线程
handle1 = CreateThread(NULL,NULL,SaleThread,(void*)1,NULL,NULL);
handle2 = CreateThread(NULL,NULL,SaleThread,(void*)2,NULL,NULL);
handle3 = CreateThread(NULL,NULL,SaleThread,(void*)3,NULL,NULL);
handle4 = CreateThread(NULL,NULL,SaleThread,(void*)4,NULL,NULL);
handle5 = CreateThread(NULL,NULL,SaleThread,(void*)5,NULL,NULL);
}
*/ //售票线程
DWORD WINAPI SaleThread(LPVOID lp)
{
int n = (int) lp;
while (ticket > )
{ //临界区同步
EnterCriticalSection(&CriticalSection);
printf("SaleThread%d sell %dth ticket\n", n, T_MAX-ticket+);
ticket--;
LeaveCriticalSection(&CriticalSection);
Sleep();
}
return ;
}
void MyThread()
{
HANDLE handle1,handle2,handle3,handle4,handle5;
//5个售票线程
handle1 = CreateThread(NULL,NULL,SaleThread,(void*),NULL,NULL);
handle2 = CreateThread(NULL,NULL,SaleThread,(void*),NULL,NULL);
handle3 = CreateThread(NULL,NULL,SaleThread,(void*),NULL,NULL);
handle4 = CreateThread(NULL,NULL,SaleThread,(void*),NULL,NULL);
handle5 = CreateThread(NULL,NULL,SaleThread,(void*),NULL,NULL);
} int main(int argc, char* argv[])
{
ticket=;
//创建临界区对象
InitializeCriticalSection(&CriticalSection);
if(ticket>)
MyThread();
Sleep();
//删除临界区对象
DeleteCriticalSection(&CriticalSection);
return ;
}

C线程同步/异步的更多相关文章

  1. 进程&线程 同步异步&阻塞非阻塞

    2015-08-19 15:23:38 周三 线程 线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码 线程安全问题都是由全局变量及静态变量引起的 若每个线程中对 ...

  2. C# 【一】进程 , 线程 , 微线程 , 同步 , 异步 , 并发 , 并行 , 阻塞 , 非阻塞

    一 理解篇 前言 本文仅仅用作借鉴使用,作者刚入行不久,所以请不小心看到这篇文章的朋友,手下留情. 本文以小故事的形式进行叙述,逻辑不通之处.请理解. 如有错误 ,欢迎指出. 谢谢.          ...

  3. JAVA 线程同步异步简单实例

    package test; public class testThread { public static void main(String[] args) { Example example = n ...

  4. Day13_71_线程同步(synchronized)

    线程同步 * 异步编程模型和同步编程模拟的区别? - 有T1和T2 两个线程 > 异步编程模型:T1线程执行T1的,T2线程执行T2的,谁也不等谁 > 同步编程模型:T1和T2 线程执行, ...

  5. 线程:主线程、子线程 同步线程、异步线程 单线程、多线程 System.Threading与System.Windows.Threading

    入门-------------------------------------------------------------------------------- 概述与概念    一个C#程序开始 ...

  6. C#异步编程(四)混合模式线程同步

    之前讨论了基元用户模式和内核模式线程同步构造.其他所有线程同步构造都基于它们,而且一般都合并了用户模式和内核模式构造,我们称为混合线程同步构造.没有线程竞争时,混合构造提供了基元用户模式构造所具有的性 ...

  7. C#异步编程(二)用户模式线程同步

    基元线程同步构造 多个线程同时访问共享数据时,线程同步能防止数据损坏.不需要线程同步是最理想的情况,因为线程同步存在许多问题. 第一个问题就是它比较繁琐,而且很容易写错. 第二个问题是,他们会损害性能 ...

  8. GIL 线程池 进程池 同步 异步 阻塞 非阻塞

    1.GIL 是一个全局解释器锁,是一种互斥锁 为什么需要GIL锁:因为一个python.exe进程中只有一份解释器,如果这个进程开启了多个线程都要执行代码 多线程之间要竞争解释器,一旦竞争就有可能出现 ...

  9. GIL 线程池 进程池 同步 异步

    1.GIL(理论 重点)2.线程池 进程池3.同步 异步 GIL 是一个全局解释器锁,是一个互斥锁 为了防止竞争解释器资源而产生的 为何需要gil:因为一个python.exe进程中只有一份解释器,如 ...

随机推荐

  1. SED入门

    使用Linux多年,SED和AWK两大神器却始终无法得心应手的来提高自己的工作效率,每每需要查找替换,都要依赖于ST2等一众图形工具,深感愧疚,乃专门抽时间学习之,志在使之真正成为左右手.   SED ...

  2. ggplot2 legend图例的修改

    ggplot2中的legend包括四个部分: legend.tittle, legend.text, legend.key, legend.backgroud.针对每一部分有四种处理方式: eleme ...

  3. firefox 安装flash插件

    第一步下载并解压flash解压出一个文件:libflashplayer.so 和文件夹usr 第二步查找plugins其他程序或许也有这个文件夹所以先查找firefox在查找mozilla看在哪个文件 ...

  4. Python基础学习笔记(四)语句

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  5. Android SDK 更新镜像服务器

    搞个新的电脑,新环境下,SDK总是更新不成功.找了一下,发现有国内的镜像,记录保存一下. Android Tools Android SDK在线更新镜像服务器    中国科学院开源协会镜像站地址:   ...

  6. HUD5423 Rikka with Tree(DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5423 Rikka with Tree Time Limit: 2000/1000 MS (Java/O ...

  7. Perl5中19个最重要的文件系统工具

    在写脚本处理文件系统时,经常需要加载很多模块.其中好多有用函数分散在各种不同的模块中.它们有些是Perl的内置函数,有些是在同Perl一起发行的标准模块中,另外一些是通过CPAN安装的. 下面来看15 ...

  8. Spring + JDBC 组合开发集成步骤

    1:配置数据源,如: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...

  9. iOS - Swift NSValue 值

    前言 public class NSValue : NSObject, NSCopying, NSSecureCoding 将任意数据类型包装成对象. 1.比较两个 NSValue 类型数据的大小 l ...

  10. iOS - UIControl

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView @available(iOS 2.0, *) public class UIC ...