-
카테고리
-
세부 분야
데스크톱 앱 개발
-
해결 여부
해결됨
세마포어 예제 소스 코드 문의
23.09.07 21:16 작성 23.09.07 21:18 수정 조회수 316
0
안녕하세요 강사님
세마포어 개념을 이해하려고 노력중입니다 ㅎㅎ
강의 보며 소스코드를 따라치면서 이해해보도록 노력하고 있습니다.
아래와 같이 실행하니, 보안에러가 발생하고 있습니다.
혹시 제가 소스코드를 잘못작성한건지, 실행환경설정을 바꿔주면 실행되는지 문의 드립니다.
#define CRTSECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <Windows.h>
#include <process.h>
#include <conio.h>
// Semaphore를 이용한 동기화
HANDLE g_hSema;
TCHAR g_StringList[10][64] = { 0 };
UINT WINAPI ThreadSemaphore(LPVOID param)
{
int nIndex = (int)param;
while (TRUE)
{
::wsprintf(g_StringList[nIndex],
TEXT("%d thred is Waiting"), nIndex);
::Sleep(500);
DWORD dwResult = ::WaitForSingleObject(g_hSema, INFINITE); // g_hSema이 끝나기를
::wsprintf(g_StringList[nIndex],
TEXT("%d thred is Selected##"), nIndex);
::Sleep(500);
::ReleaseSemaphore(g_hSema, 1, NULL);
}
return 0;
}
int main(void)
{
g_hSema = ::CreateSemaphore(NULL, 3, 3, NULL);
UINT nThreadId = 0;
HANDLE hThread = NULL; // 핸들 생성
for (int i = 0; i < 10; i++) {
hThread = (HANDLE)::_beginthreadex(
NULL,
0,
ThreadSemaphore,
(LPVOID)i,
0,
&nThreadId);
}
while (1)
{
system("cls");
for (int i = 0; i < 10; i++)
{
putws(gStringList[i]);
}
::Sleep(1000);
}
return 0;
}
<에러 문구>
답변을 작성해보세요.
1
0
널널한 개발자
지식공유자2023.09.08
지정된 파일을 찾을 수 없는 경우는 .exe 파일 빌드에 실패했기 때문입니다. 그리고 코드를 컴파일 해보니 컴파일 오류가 있었습니다. 즉, 컴파일 오류가 있어서 실행파일(.exe) 빌드에 실패했고 따라서 실행자체가 불가능한 것입니다. 참고하시기 바랍니다. :)
답변 2