程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++線程同步實例剖析

C++線程同步實例剖析

編輯:關於C++

C++線程同步實例剖析。本站提示廣大學習愛好者:(C++線程同步實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++線程同步實例剖析正文


本文實例剖析了C++線程同步成績,分享給年夜家供年夜家參考。詳細剖析以下:

該實例設置全局變量g_bContinue,在主線程中設置全局變量g_bContinue,任務線程檢測該全局變量,完成主線程掌握任務線程的目標。

打印出的g_cnt1與g_cnt2的數值分歧,是由於線程調試不時間片的切換。

詳細代碼以下:

// countError.cpp : 界說掌握台運用法式的進口點。 
// 
#include "stdafx.h" 
#include <Windows.h> 
 
DWORD g_cnt1; 
DWORD g_cnt2; 
BOOL g_bContinue = TRUE; 
DWORD WINAPI ThreadProc(__in LPVOID lpParameter) 
{ 
  while(g_bContinue) 
  { 
    g_cnt1++; 
    g_cnt2++; 
  } 
  return 0; 
} 
 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
  HANDLE hThread[2]; 
  g_cnt1 = g_cnt2 = 0; 
 
  hThread[0] = ::CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL); 
  hThread[1] = ::CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL); 
 
  Sleep(1000); 
  g_bContinue = FALSE; 
  ::WaitForMultipleObjects(2, hThread, TRUE, INFINITE); 
  printf("g_cnt1=%d\n",g_cnt1); 
  printf("g_cnt2=%d\n",g_cnt2); 
  ::CloseHandle(hThread[0]); 
  ::CloseHandle(hThread[1]); 
  return 0; 
}

願望本文所述對年夜家的C++法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved