#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. Android 获取存储空间

    package com.example.getMem; import java.io.File; import android.os.Build;import android.os.Bundle;im ...

  2. Java_JDK_TreeMap

    (一)TreeMap TreeMap使用的是红黑树来实现的,所以重点是红黑树的插入和删除. 红黑树的3个特性: 根节点和所有外部节点的颜色都是黑色的: 从根节点到外部节点的途中没有连续两个节点的颜色是 ...

  3. sqlite中的自增主键

    http://stackoverflow.com/questions/8519936/sqlite-autoincrement-primary-key-questions I'm not sure w ...

  4. SOME USEFUL MACHINE LEARNING LIBRARIES.

    from: http://www.erogol.com/broad-view-machine-learning-libraries/ http://www.slideshare.net/Vincenz ...

  5. [HDOJ3911]Black And White(线段树,区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意:一个01串,两种操作: 0 a b:查询[a,b]内连续1的最长长度. 1 a b:翻转[ ...

  6. 读取视屏文件,保存帧图片为ppm文件

    ffmpeg跟sdl的学习过程:一.版本信息:ffmpeg-3.0.2.tar.bz2SDL2-2.0.4.tar.gz二.编译过程:1.ffmgeg的编译:./configure --enable- ...

  7. FZU 2219 StarCraft(星际争霸)

    Description 题目描述 ZB loves playing StarCraft and he likes Zerg most! One day, when ZB was playing SC2 ...

  8. Deep Learning Workbench Installation Notes

    1. ROS Indigo (30 min) Just flow ROSWiki: http://wiki.ros.org/indigo/Installation/Ubuntu NOW simply ...

  9. Cocos2d-x优化中纹理优化

    转自 http://blog.csdn.net/tonny_guan/article/details/41016241 Cocos2d-x优化中纹理优化 1.纹理像素格式纹理优化工作的另一重要的指标是 ...

  10. TCP三次握手及四次挥手详细 转

    一.TCP报文格式        TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:      ...