정의소켓(Socket)은 OS커널에 구현되어 있는 프로토콜 요소에 대한 추상화된 인터페이스 이다.장치 파일의 일종 으로 이해할 수 있다.일반파일에 대한 개념이 대부분 적용된다. 소켓과 파일의 유사성소켓 = 파일이다 라고 생각하면 된다. 소켓은 파일과 같은 방식으로 취급될 수 있다. 소켓은 프로세스를 주체로 하여 다음과 같은 작업을 수행할 수 있다.일반적으로 우리가 파일에 사용하는 행위들인 열기, 쓰기, 생성, 삭제 등을 할 수 있다. 이러한 대상체 파일에 TCP소켓에 대한 추상화된 인터페이스를 제공하면, 이를 TCP소켓이라고 할 수 있다.이때, TCP상에서는 파일과 다르게 쓰기와 읽기를 다음과 같이 표현한다. Write -> SendRead -> Receive 데이터 단위와 스트림소켓에서 데이터를 Sen..
개념스레드 란? CPU의 1개당 실행단위 를 이야기한다. 한개의 프로세스(프로그램... 이라고 표현하면 잘못된 것 이긴 하지만, 대략적으로) 마다 최소 1개 이상의 Thread를 가질 수 있다. 작업을 시작하려면 작업공간과 인부를 가져야 한다고 이해하자. 여기서 작업공간은 메모리(램또는 SSD같은것) 이고,인부는 CPU라고 생각하면 된다. 정리하면 다음과 같다.한 Process는 최소 1개 이상의 Thread를 갖는다.( Memory 와 함께 )즉, 한 Process는 [ CPU + Memory ] ( VMS 버추얼 메모리 ) 를 가진다.Thread는 개별화된 흐름(문맥)이다. int main()함수가 n개(스레드 개수만큼) 있다고 생각하면 된다.전용 스택을 갖는 실행의 단위이다.1MB가량의 콜스택 메모..
개요두개 이상의 프로세스 , 스레드가 공유자원을 동시에 사용하려고 진행하려고 할 때 발생하는 현상을 말한다.예시 T1과 T2가 동시에 Input에 접근한다고 가정하자. 우리는 항상 일정한 결과를 얻고싶지만, T1과 T2가 동시에 메모리에 접근해서 1이나 2를 때려박는 상황이다. T2는 뭐가있던 2로 바꿔버리고, T2는 뭐가있던 1로 바꿔버리는 상황일 때. 누가먼저 데이터를 집어넣는지 알 수 없을 때 우리는 Out이 뭐가 나타날지 알 수가 없다. 또, 메모리를 처리하고 종료 할 때 비정상적으로 종료된다면 메모리의 데이터영역관리가 엉망진창이 되어버릴것이다. 이렇게 공유메모리를 동시에 접근하려고 하는 문제가 레이스컨디션 문제이다.
ImageAiCon PP진행중Unreal ImageRetargeting 코드제작TCP방식으로 데이터 통신처리를 진행1. 서버커넥팅을 위한 TCP프로토콜 제작중...테스트 진행중.클라이언트 접속 프로그램 제작중 서버 Open성공이제 Connect 용 클라이언트 제작만 하면된다!진행 예정 작업Unreal ImageRetargeting 코드제작언리얼 함수 상으로 지정된 카메라의 타겟뷰를 이미지값으로 저장 반환하는 방식이 존재함.TCP방식으로 데이터 통신처리를 진행TensorFlow를 사용하여 전달받은 이미지로 학습 알고리즘 연산.연산결과를 다시 언리얼로 전달하여 학습된 데이터를 갱신.4번과 3번을 반복학습결과확인 후 재학습 5와 6을 원하는 AI행동패턴이 나타날때까지 반복목표TensorFlow를 사용하여 알..
if (::WaitForSingleObject(hEvent, INFINITE) == WAIT_OBJECT_0)
{
puts("종료 이벤트를 감지했습니다!");
::CloseHandle(hEvent);
hEvent = NULL;
}
//WAIT_OBJECT_0 (0x00000000L):
//지정된 개체가 신호 상태가 되어 대기에서 벗어난 경우 반환됩니다.
//WAIT_ABANDONED (0x00000080L):
//대기 중인 쓰레드가 소유한 뮤텍스 개체가 소유권이 해제되지 않은 상태로 소멸된 경우 반환됩니다. 이 반환 값은 주로 뮤텍스에 대한 대기에서 발생합니다.
//WAIT_TIMEOUT (0x00000102L):
//대기 시간이 만료되어 대기에서 벗어난 경우 반환됩니다. 이 경우 dwMilliseconds 파라미터가 0이 아니어야 합니다.
//WAIT_FAILED ((DWORD)0xFFFFFFFF):
//함수가 실패한 경우 반환됩니다. GetLastError 함수를 호출하여 구체적인 오류 코드를 가져올 수 있습니다.