38 windows_38_thread_CriticalSection 线程-临界区

windows_38_thread_CriticalSection 线程-临界区

  1. // windows_38_thread_CriticalSection.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "windows.h"
  5. CRITICAL_SECTION g_cs = { 0 };
  6. long g_nValue = 0;
  7. void Print( )
  8. {
  9. //进入临界区 - 加锁
  10. EnterCriticalSection( &g_cs );
  11. for (int i = 0; i < 10000000;i++)
  12. {
  13. g_nValue++;
  14. }
  15. printf( "Long long long ...Long long%ld\n",g_nValue );
  16. //离开临界区 - 解锁
  17. LeaveCriticalSection( &g_cs );
  18. }
  19. DWORD WINAPI PrintProc( LPVOID pWparam )
  20. {
  21. int i = 0;
  22. Print( );
  23. Sleep( 1 );
  24. return 0;
  25. }
  26. void Create( )
  27. {
  28. DWORD nThreadID = 0;
  29. HANDLE hThread[2] = { 0 };
  30. hThread[0] = CreateThread( NULL, 0, PrintProc, NULL, 0, &nThreadID );
  31. hThread[1] = CreateThread( NULL, 0, PrintProc, NULL, 0, &nThreadID );
  32. getchar( );
  33. }
  34. int _tmain(int argc, _TCHAR* argv[])
  35. {
  36. //初始化临界区
  37. InitializeCriticalSection( &g_cs );
  38. Create( );
  39. //删除临界区
  40. DeleteCriticalSection( &g_cs );
  41. return 0;
  42. }





posted @ 2016-06-10 17:01  -刀狂剑痴-  阅读(144)  评论(0编辑  收藏  举报