windows线程同步之原子锁(Interlocked)(用例)

简单学习测试用例

/* 原子锁 */
#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 IInterlockedIncrement(&num); //(++)// InterlockedDecrement(&num); //(--)//如果第一个参数与第三个参数的对应的值相等,它将被第二个参数的值替换// InterlockedCompareExchange(&num, 10, 0);// ......等以Interlocked为前缀的API
#else++num;
#endifreturn 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;
}

本文链接:https://my.lmcjl.com/post/10468.html

展开阅读全文

4 评论

留下您的评论.