세마포어 예제 소스 코드 문의
안녕하세요 강사님
세마포어 개념을 이해하려고 노력중입니다 ㅎㅎ
강의 보며 소스코드를 따라치면서 이해해보도록 노력하고 있습니다.
아래와 같이 실행하니, 보안에러가 발생하고 있습니다.
혹시 제가 소스코드를 잘못작성한건지, 실행환경설정을 바꿔주면 실행되는지 문의 드립니다.
#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;
}
<에러 문구>
답변 2
0
지정된 파일을 찾을 수 없는 경우는 .exe 파일 빌드에 실패했기 때문입니다. 그리고 코드를 컴파일 해보니 컴파일 오류가 있었습니다. 즉, 컴파일 오류가 있어서 실행파일(.exe) 빌드에 실패했고 따라서 실행자체가 불가능한 것입니다. 참고하시기 바랍니다. :)
세마포어 개수에 따른 스레드 점유상태
0
61
2
메모리 맵과 비동기 입/출력 조합 #2 수업내용에 질문있습니다.
0
96
2
힙 메모리 블럭 관리 방법 질문
0
97
2
MapViewOfFile 원리 관련 질문있습니다
0
102
1
가상 메모리 시스템 영역 구분
0
96
2
스택 크기 결정 단계
0
75
2
시스템프로그래밍-응용편
0
130
2
바이트와 관련된 유튜브 영상을 못 찾겠어요ㅠㅠ
0
94
2
파일 복사에 관한 질문입니다
0
114
2
세마포어 예제에 대한 질문이 있습니다.
0
111
2
메모장 쓰레기값 ?
0
133
2
64 bit 운영체제라면 가상메모리가
0
180
2
alertable Wait 상태 질문있습니다
0
226
1
GetCurrentDirectory 관련 질문
0
169
2
세마포어 예제중 형변환에 대한 질문
0
162
2
강사님 dll 지연로딩 관련하여 질문 드립니다
0
205
3
선장님 , _beginThreadEx() 함수 원리는 어디서 정보를 얻을 수 있을까요?
0
286
2
메모리 맵 강의 예제의 결과가 이상합니다.
0
227
1
강사님 파일입출력(Callback함수)와 관련하여 질문 드립니다.
0
348
2
dll 명시적 링크 오류 (원인 및 해결 방법이 필요 합니다)
0
968
2
static 영역의 rw 가능한 곳은 어떤 데이터가 담기는지 궁금합니다.
0
223
1
TerminanteProcess 와 관련하여 질문 드립니다.
0
172
1
강사님 스레드 관련 질문 드립니다.
0
226
1
강사님 메뉴얼 중 이것도 궁금해서 여쭤봅니다.
0
210
2






