1. #include "iostream"
  2. #include "windows.h"
  3. #include "cstring"
  4. using namespace std;
  5.  
  6. static int g_nIndex=;
  7. const int MAX_TIMES=;
  8. static DWORD g_dwTimes;
  9. CRITICAL_SECTION g_CriticalSection;
  10.  
  11. DWORD WINAPI IncProc(LPVOID lpParam){
  12. BOOL fDone=FALSE;
  13. while(!fDone){
  14. EnterCriticalSection(&g_CriticalSection);
  15. if(g_nIndex>=MAX_TIMES){
  16. fDone=TRUE;
  17.  
  18. }
  19. else{
  20. g_dwTimes++;
  21. printf("The Inc count's value is%d.\n",g_dwTimes);
  22. g_nIndex++;
  23. Sleep();
  24. }
  25. LeaveCriticalSection(&g_CriticalSection);
  26. }
  27.  
  28. return();
  29. }
  30.  
  31. DWORD WINAPI DecProc(LPVOID lpParam){
  32. BOOL fDone=FALSE;
  33. while(!fDone){
  34. EnterCriticalSection(&g_CriticalSection);
  35. if(g_nIndex>=MAX_TIMES){
  36. fDone=TRUE;
  37. }
  38. else{
  39. g_dwTimes--;
  40. printf("The Dec count's value id %d.\n",g_dwTimes);
  41. g_nIndex++;
  42. Sleep();
  43. }
  44. LeaveCriticalSection(&g_CriticalSection);
  45. }
  46.  
  47. return();
  48. }
  49.  
  50. void main(){
  51. HANDLE hThread[];
  52.  
  53. InitializeCriticalSection(&g_CriticalSection);
  54.  
  55. hThread[]=CreateThread(
  56. NULL,
  57. ,
  58. IncProc,
  59. reinterpret_cast<LPVOID>(),
  60. ,
  61. NULL
  62. );
  63. printf("Thread0 is Created!\n");
  64.  
  65. hThread[]=CreateThread(
  66. NULL,
  67. ,
  68. DecProc,
  69. reinterpret_cast<LPVOID>(),
  70. ,
  71. NULL
  72. );
  73. printf("Thread1 is Created!\n");
  74.  
  75. printf("Both Threads are ready into critical section!\n");
  76.  
  77. WaitForMultipleObjects(,hThread,TRUE,INFINITE);
  78.  
  79. CloseHandle(hThread[]);
  80. CloseHandle(hThread[]);
  81.  
  82. DeleteCriticalSection(&g_CriticalSection);
  83.  
  84. getchar();
  85. }

windows系统调用 临界区机制的更多相关文章

  1. Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

    为什么要写这篇文章 1.      因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了K ...

  2. 全面介绍Windows内存管理机制及C++内存分配实例

    转自:http://blog.csdn.net/yeming81/article/details/2046193 本文基本上是windows via c/c++上的内容,笔记做得不错.. 本文背景: ...

  3. windows程序消息机制(Winform界面更新有关)

    windows程序消息机制(Winform界面更新有关) 转自:http://www.cnblogs.com/blosaa/archive/2013/05/31/3109586.html 1. Win ...

  4. windows程序消息机制(Winform界面更新有关)--转

    1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...

  5. 深入详解windows安全认证机制ntlm&Kerberos

    0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基 ...

  6. 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件

    本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...

  7. Windows系统调用中的现场保存

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中的现场保存 我们之前介绍过三环进零环的步骤 ...

  8. Windows系统调用中的系统服务表描述符

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中的系统服务表描述符 在前面,我们将解过 ...

  9. Windows系统调用中API的3环部分(依据分析重写ReadProcessMemory函数)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API的3环部分 一.R3环API分析的重 ...

随机推荐

  1. Red KV数据 庫设計模式

    转:http://blog.nosqlfan.com/html/3033.html NoSQL带给我们的东西很多,高性能,水平扩展性,还有不一样的思维方式.本文来自@hoterran的个人博客运维与开 ...

  2. 利用MetaWeblog API实现XMLRPC写博客功能

    Windows Live Writer是一款小巧的写博客的工具,非常方便,甚至网上看到过有的评论称Live Writer是一款最不像微软产品的微软产品. Writer支持MSN Spaces以及Wor ...

  3. 递归merge排序

    package sort; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scan ...

  4. [转载]How To Add Swap on Ubuntu 12.04

    How To Add Swap on Ubuntu 12.04 Aug 17, 2012  Linux Basics Ubuntu   About Linux Swapping Linux RAM i ...

  5. struts2常用标签使用说明

    在struts2中,用的是s标记,先在jsp文件中引入标记:<%@ taglib prefix="s" uri="/struts-tags"%> & ...

  6. js变量

    由于undefined和null两个值的比较是相等的,所以,未初始化的变量和赋值为null的变量会相等.这时,可以采用typeof变量的类型进行比较.但,建议还是养成编码的规范,不要忘记初始化变量. ...

  7. unity3d插件Daikon Forge GUI 中文教程3-基础控件Button和Sprite的使用

    2.2添加一个按钮Button 来看看特有的属性:Button Properties Data 显示的文本 Behavior 中的几个: Aoto Size 选中时就是按钮的背景会根据Data中的文本 ...

  8. php内网探测脚本&简单代理访问

    <?php $url = isset($_REQUEST['u'])?$_REQUEST['u']:null; $ip = isset($_REQUEST['i'])?$_REQUEST['i' ...

  9. chrome 优秀的插件推荐

    就本人使用过的chrome插件推荐下: 1:Adblock Plus 免费的广告拦截器,可阻止所有烦人的广告及恶意软件和跟踪. 2:ChaZD 英文翻译,妈妈再也不用担心我英文看不懂了,ChaZD 查 ...

  10. NeuSoft(1)构建嵌入式交叉编译环境

    操作系统版本:ubuntu 12.04 内核名称:Linux 内核发行版:3.2.0-generic 内核版本:#50-Ubuntu SMP Mon Sep 12 21:18:14 UTC 2011 ...