Windows_37_thread_interlock Thread-Atomic lock
// windows_37_Thread_InterLock.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "windows.h"
long g_nValue1 = 0;
long g_nValue2 = 0;
DWORD WINAPI InterProc1( LPVOID pParam )
{
for (int nIndex = 0; nIndex < 10000000;nIndex++)
{
//普通的加加
g_nValue1++;
}
return 0;
}
DWORD WINAPI InterProc2( LPVOID pParam )
{
for (int nIndex = 0; nIndex < 100;nIndex++)
{
//原子锁加加
//g_nValue2++;
InterlockedIncrement( &g_nValue2 );
}
return 0;
}
void Create( )
{
DWORD nThreadID = 0;
HANDLE Hthread [ 4 ] = { NULL
HThread [ 0 ] Span class= "pun" >= createthread ( NULL 0 interproc1 , NULL 0 &
HThread [ 1 ] Span class= "pun" >= createthread ( NULL 0 interproc1 , NULL 0 &
HThread [ 2 ] Span class= "pun" >= createthread ( NULL 0 interproc2 , NULL 0 &
HThread [ 3 ] Span class= "pun" >= createthread ( NULL 0 interproc2 , NULL 0 &
WaitForMultipleObjects( 4, hThread, FALSE, INFINITE );
printf( "%ld\n", g_nValue1 );
printf( "%ld\n", g_nValue2 );
}
int _tmain(int argc, _TCHAR* argv[])
{
Create( );
return 0;
}
From for notes (Wiz)
PNS Windows_37_thread_interlock Thread-Atomic lock