임계영역 기반 동기화 주의> 임계영역으로 동기화할 변수를 함수에서 리턴하면 다른 곳에서 진입하지 못하는 문제가 발생하니 반드시, 내부변수를 만들어 동기화할 변수 값을 내부변수에 저장하고, 내부 변수를 리턴해야 한다. 앞선 코드(http://petra.tistory.com/1043)에 블록체 코드만 추가한 것이다. 하나의 쓰레드가 사용중이면 다른 쓰레드는 사용 못하고 대기한다. 1. CRITICAL_SECTION 변수 선언 2. 초기화 함수 호출, InitializeCriticalSection(&hCriticalSection); 3. 동기화 할 변수에 진입할때 EnterCriticalSection() 호출 4. 변수 사용이 끝나면 LeaveCriticalSection() 호출 5. 초기화에 할당된 리소스 ..
쓰레드 - 임계영역 (Critical Section) 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 #include "stdafx.h" #include #include #include #include #define NUM_OF_GATE 6 LONG gTotalCount = 0; void IncreaseCount() { gTotalCount++; } unsigned int WINAPI ThreadProc(LPVOID lParam) { for (int i = 0; i
문자열에서 토큰 단위로 자르기 1 2 3 4 5 6 7 8 9 TCHAR string[] = _T("YK3, 121440, 085025 00007460 000000000512 3 00000000 000000 00007470 00007460 000000000001 000000000937 121440, 20170106 08:50:25:549"); TCHAR seps[] = _T(" ,"); // 공백문자와 , 로 구분자 TCHAR* next_token; TCHAR* token = _tcstok_s(string, seps, &next_token); while (token != NULL) { _tprintf(_T("%s\n"), token); token = _tcstok_s(NULL, seps, &next_to..