简单学习测试用例
/* 原子锁 */
#include <Windows.h>
#include <stdio.h>
// #define I
static LONG num = 0;
DWORD thProc(LPVOID unuseful)
{
for (size_t i = 0; i < 100000; ++i)
#ifdef I
InterlockedIncrement(&num); //(++)
// InterlockedDecrement(&num); //(--)
//如果第一个参数与第三个参数的对应的值相等,它将被第二个参数的值替换
// InterlockedCompareExchange(&num, 10, 0);
// ......等以Interlocked为前缀的API
#else
++num;
#endif
return 0;
}
int main(void)
{
HANDLE th[2];
DWORD thID;
th[0] = CreateThread(0, 0, thProc, NULL, 0, &thID);
th[1] = CreateThread(0, 0, thProc, NULL, 0, &thID);
WaitForMultipleObjects(2, th, TRUE, INFINITE);
printf("%ld\n", num);
// system("pause");
CloseHandle(th[0]);
CloseHandle(th[1]);
return 0;
}