졸업 작품

졸업 작품

졸업작품 2학기 발표 영상

방학때 취업해버려서 서버에서 크게 바뀐 부분은 없음.. 튜토리얼 하면서 약간 연동이 들어간 부분 정도.. 근데 팀원 친구들이 열심히 해줘서 1학기 보다 조금 더 완성된 모습으로 보인다...

졸업 작품/서버

Boost Strand 사용

이 포스팅은 위의 두 주소에서 Strand를 공부하고 사용해본 기록이다. strand? : http://blog.naver.com/PostView.nhn?blogId=njh0602&logNo=220715956896&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView [boost.asio] strand는 어떻게 동작하고 왜 사용해야 하는가? How strands work and why you should use themIf you ever used Boost Asio, certainly you used or a... blog.naver.com strand 직접 사용 : https://chipmaker.tistory.c..

졸업 작품/서버

CMake Boost 붙이기

서버에 boost를 붙여보려고 했다. 그래서 먼저 CMake에 Boost를 붙여야 됬는데 추가해야 되는 내용은 다음과 같았다. # Boost Include Path를 등록한다. INCLUDE_DIRECTORIES(include . ${Boost_INCLUDE_DIR}) #boost 패키지를 받아온다. add_definitions( -DBOOST_ALL_NO_LIB ) set( Boost_USE_STATIC_LIBS ON ) find_package(Boost REQUIRED COMPONENTS thread system) #lib를 등록한다. target_link_libraries(JHNET ${Boost_LIBRARIES}) cmake가 boost도 찾아주다니 ㄷㄷ 개꿀~

졸업 작품/서버

메세지 큐 구현

IO Logic 스레드 간의 통신을 위해서 MPSQ 큐를 사용하고 있었다. (여기 참고) 근데 이 Atomic 연산이 코드로는 빨라보여도 전혀 빠르지 않을 수도 있다는 말을 선배한테 들었다. 보다 더 쉽고 나은 방법에 대해서 알려주셨다. 내용은 아래와 같다. 위의 큐를 다음과 같이 바꾸는 방법에 대해서 알게 되었다. 일단 큐를 두개를 만들고, 입력부분에는 Mutex를 사용하여 Enqueue 시키도록 한다. 어짜피 출력이 병목이기 때문에, 입력 부분은 동기화 렉이 있어도 괜찮다. Dequeue쪽은 Mutex없이 그냥 큐 쓰듯이 쓴다. 어짜피 싱글 스레드니까.. 만약 Dequeue를 끝내고 메시지큐가 비었다면? 메시지 큐를 교체해준다. 이렇게 구현하면 입력은 Mutex로 인해서 동기화가 일어나 느려질 수는 ..

졸업 작품/서버

드디어 고쳤다...

더미 클라이언트 동접 천명으로 테스트하려고 했는데 서버가 자꾸 터지는 현상이 있었다..... 심지어 오류가 계속 여기저기 이상한 곳에서 계속 다르게 일어나는 오류였다... 갑자기 멀쩡히 있던 mutex가 죽지를 않나, 멀쩡하던 string에서 할당하다가 죽지를 않나... 웃긴것은 TCP 테스트만 켜놓으면 안터지고, UDP 테스트만 켜놔도 안터지는데, 둘다 키면 터지는 것이었다... 이것에 대한 원인은 이거였다. WSARecv와 WSARecvFrom에다 넘기는 HANDLE 타입의 flags와 recvBytes가 주소값인데, 정확한 이유는 모르겠지만 Pending이나 두개의 함수가 동시에 들어갔을 때, 비동기적으로 저 주소안의 값이 바뀌어 버리는 것 같다. 그래서 저 두개의 변수를 클래스 멤버 변수로 할당하..

졸업 작품/서버

1학기 발표자료 - 졸작서버 개선기

기말 발표로 사용한 자료. 3시간만에 만들고 제출해서 좀 내용이 엉망인 기분 ㅋㅋㅋㅋ

졸업 작품/서버

1학기 발표자료 - 졸작서버 제작기

이득우 교수님께서 이 발표자료를 짧게 발췌해서 언리얼 써밋에 발표하신게 꽤 오래 기억에 남을 것 같다. 낄낄

졸업 작품/서버

1학기 결산

1학기 동안 한 내용을 간단하게 정리하면 다음과 같다. 1. IOCP Epoll 크로스 플랫폼 자체 서버 구현 (이름하야 JHNET!!) 2. JHNET 하트비트 서버 (서버가 죽으면 되살림) 3. UE4 JHNET 대응 모듈 구현 (RPC, 변수 동기화, 위치 동기화 구현, 로비 구현) 1학기는 클라이언트 구현에 50% 정도 시간을 쏟아서 생각보다 한 게 별로 없고, 클라 변화에 쉽게 대응하는 부분에 초점이 많이 맞춰져 있었다. 그래서 매크로와 템플릿을 사용하여 최대한 빠른 시간에 동기화를 맞추고 버그를 쉽게 트래킹 하도록 만드는 것이 중심이었다. 그래서 구현한 결과는 다음과 같다!! 이제 어느 정도 클라이언트는 끝났으니까, 클라이언트 친구들에게 나머지 클라이언트를 맡기고 방학과 2학기는 서버에 매진하..

졸업 작품/서버

쓰레드와 Sleep

개요 CPU의 능력을 말할때 N코어 M쓰레드 라는 말을 언뜻 들은적이 있었다. 하지만 이게 정확히 무슨 뜻인지 잘 모르고 넘어갔다. 하지만 쓰레드를 나누다보니 CPU 사용률이 치솟는 현상이 있었고, 이 현상을 고치는 방법에 대해서 찾으면서 CPU와 Sleep 함수, 쓰레드에 대해서 간단하게 정리해보았다. CPU 코어? 쓰레드? CPU의 능력을 말할 때 사용하느 코어와 쓰레드는 무슨 용어일까? 나는 처음에 이것이 프로그래밍의 쓰레드와 관련이 없는줄알았다. 왜냐하면 내 컴퓨터는 4코어 4쓰레드였는데, 쓰레드 100개짜리 프로그램을 돌려도 CPU가 100%가 되지않고 잘 돌았었기 떄문이다. 하지만 이것은 그냥 나의 어림짐작 지식이었고, 진짜 내용은 다음과 같이 정리되었다. 일단 4코어 4쓰레드와 4코어 8쓰레..

졸업 작품/서버

C++ MPSCQueue 분석 및 사용 (부제. memory order)

학생이라 아직 잘 모릅니다.. 틀린 내용이 있으면 알려주시면 감사하겠습니다. ㅠㅜ 이 소스 안되는 것 같습니다. 검증을 충분히 거치고 사용해주세요. X( 더 나은 방법에 대해서는 여기에 기록했습니다. 개요 서버를 리뉴얼하려고 하면서 필요하게 된 자료구조는 다중 입력 싱글 출력이 가능한 큐였다. 그래서 MPSCQueue(Multi Produce Single Consume Queue)가 필요하게 됬는데, 너무 생소한 분야라 라이브러리를 쓸까? 생각했지만 그래도 시간도 있으니 한번 직접 구현해보자! 결정했다. (정확히 소스 분석...) 참고 소스는 여기 (https://github.com/mstump/queues) 분석하기 일단 풀소스는 다음과 같다. 네이밍은 필자 스타일에 맞게 조금 바꾸었다. #includ..

장형이
'졸업 작품' 카테고리의 글 목록