1. 程式人生 > >22.原子操作

22.原子操作

自增 locked col lock winapi system fin dword ret

  • 變量自增
    1 InterlockedIncrement(&num);

  • 變量加一個指定數
    1 InterlockedAdd(&num, 100);

完整代碼:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <Windows.h>
 4 
 5 int num = 0;
 6 
 7 
 8 DWORD WINAPI add(void *p)
 9 {
10     for (int i = 0; i < 10000; i++)
11     {
12         //
InterlockedIncrement(&num); 13 InterlockedAdd(&num, 100); 14 } 15 16 return 0; 17 } 18 19 void main() 20 { 21 22 HANDLE hd[10]; 23 for (int i = 0; i < 10; i++) 24 { 25 hd[i] = CreateThread(NULL, 0, add, NULL, 0, NULL); 26 } 27 WaitForMultipleObjects(10
, hd, TRUE, INFINITE); 28 29 printf("%d", num); 30 31 system("pause"); 32 }

22.原子操作