1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
char str[100]; HANDLE hEvent; unsigned WINAPI NumberOfA(void* arg) { WaitForSingleObject(hEvent, INFINITE); int cnt = 0; for (int i = 0; str[i] != 0; i++) { if (str[i] == 'A') cnt++; } printf("A的个数: %d\n", cnt); return 0; }
unsigned WINAPI NumberOfOther(void* arg) { int cnt = 0; for (int i = 0; str[i] != 0; i++) { if (str[i] != 'A') cnt++; } printf("Other的个数: %d\n", cnt-1); SetEvent(hEvent); return 0; }
int main() { fputs("Input: ", stdout); fgets(str, 100, stdin); WINBASEAPI _Ret_maybenull_ HANDLE WINAPI CreateEventW( _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes, _In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPCWSTR lpName ); hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
HANDLE hThread1 = (HANDLE)_beginthreadex(NULL, 0, NumberOfA, NULL, 0, NULL); HANDLE hThread2 = (HANDLE)_beginthreadex(NULL, 0, NumberOfOther, NULL, 0, NULL); WaitForSingleObject(hThread1, INFINITE); WaitForSingleObject(hThread2, INFINITE);
ResetEvent(hEvent); CloseHandle(hEvent); }
|