데드락 현상은 예를 들어 스레드 Process1 그리고 Process2 가 존재하고 서로 자원(Resource)을 점유하고있고 P1 -> P2(점유하고있는 자원) P2 -> P1(점유하고있는 자원) 접근할때 데드락 현상이 일어난다. 서로 점유하고있는 자원에 LOCK을 걸고있고 풀지않으니깐 일어나는 현상이다. 그러면 데드락현상을 한번 생성해보자. #include #include #include #include #include #include "ItemRepository.h" #include "UserRepository.h" using namespace std; ItemRepository itemRepository; UserRepository userRepository; void Func1() { for (..
지금까지 1년 6개월정도 프로그래밍 하면서 전부다 단일스레드 환경에서 개발해왔다. 주로 Spring 웹 개발만 해왔으니 딱히 스레드를 사용할 필요가 없었다. 왜냐하면 톰캣에서 알아서 멀티 스레드 환경을 만들어줬기 때문이다 그래서 딱히 신경써볼 필요도 없었고 편하게 개발을 잘 하고 있었다. 하지만 이제 게임서버를 공부하면서 멀티스레드 환경을 직접 만들어야 되는 상황이다. 나는 대충은 멀티스레드가 뭔지 알고는 있다. 예를들어 하나의 프로그램에서 여러가지 이벤트에따라 동시에 처리되야할 경우 우리는 스레드를 만들어서 컴퓨터에게 일을 시킨다. 이론상 스레드를 만들어서 일만 시키면 끝인것같지만. 사실 그렇게 쉽지 않다. 멀티스레드 프로그래밍에서 주의해야할점은 공용데이터 (전역변수, Heap)들은 값을 변경할때 주의..