스레드 동기화 - 핵심 코드 세그먼트
- #include <windows.h>
- #include <iostream.h>
-
- //
- DWORD WINAPI Fun1Proc(
- LPVOID lpParameter // thread data
- );
-
- DWORD WINAPI Fun2Proc(
- LPVOID lpParameter // thread data
- );
-
- int tickets = 100; //
- CRITICAL_SECTION g_cs;
-
- void main()
- {
- //
- HANDLE hThread1;
- HANDLE hThread2;
-
- //
- hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);
- hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);
-
- // ,
- CloseHandle(hThread1);
- CloseHandle(hThread2);
-
- //
- InitializeCriticalSection(&g_cs);
-
- // 4
- Sleep(4000);
-
- //
- DeleteCriticalSection(&g_cs);
- }
-
-
- // 1
- DWORD WINAPI Fun1Proc(LPVOID lpParameter)
- {
- while(TRUE)
- {
- EnterCriticalSection(&g_cs);
- if( tickets>0)
- {
- Sleep(1);
- cout<<"thread1 sell ticket: "<<tickets--<<endl;
- LeaveCriticalSection(&g_cs);
- }
- else
- {
- LeaveCriticalSection(&g_cs);
- break;
- }
- }
- return 0;
- }
-
-
-
- // 2
- DWORD WINAPI Fun2Proc(LPVOID lpParameter)
- {
- while(TRUE)
- {
- EnterCriticalSection(&g_cs);
- if( tickets>0)
- {
- Sleep(1);
- cout<<"thread2 sell ticket: "<<tickets--<<endl;
- LeaveCriticalSection(&g_cs);
- }
- else
- {
- LeaveCriticalSection(&g_cs);
- break;
- }
- }
- return 0;
- }
-
-
-
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
스레드 동기화 - 핵심 코드 세그먼트텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.