본문 바로가기
728x90
반응형

게임개발/게임서버10

네트워크 기초 네트워크란?노드(네트워크에 속한 컴퓨터 또는 통신장비)들이 데이터를 주고받을 수 있도록 디지털 전기 통신망으로 연결한 것 인터넷전 세계를 연결하는 범위가 큰 네트워크ex) www -> 인터넷을 통해 웹과 관련된 데이터를 공유하는 것 네트워크 범위1. LAN(근거리 통신망)같은 네트워크 대역에 있는 노드들끼리 통신 2. WAN 네트워크 대역이 다른 노드들이 통신할 때 통신 범위를 넓혀서 네트워크 대역이 다르더라도 통신이 가능하게 만듬 ex) 집에서 컴퓨터로 구글 웹사이트를 들어갔을 때 네트워크 상에서는 다음과 같이 표시된다.  네트워크 통신 방식1. 유니 캐스트1:1로 통신하는 방식(특정한 하나의 대상과의 통신) 2. 멀티 캐스트같은 네트워크 대역에서 특정한 다수를 대상으로 통신 3. 브로드 캐스트같은 네.. 2024. 4. 22.
동기화 동기화란? 1. 프로세스나 스레드의 실행 순서를 제어 ex) Reader 작업을 하는 스레드와 Writer 작업을 하는 스레드가 있을 때 Writer 작업이 먼저 끝나야지 Reader 작업을 해야한다고 했을 때 동시에 실행 될 수 있는 스레드를 작업 순서대로 진행하게 함 2. 동시에 접근해서는 안 되는 자원에 하나의 프로세스 또는 스레드만 접근하게 하기 동시에 접근해서는 안되는 자원 즉, 공유자원(전역변수, 파일, DB ..등)의 동시 접근을 막는 것이다. 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 "임계 구역"이라고 한다. 두 개 이상의 스레드가 임계 구역에 진입하고자 하면 둘 중 하나는 대기해야 됨 여러개의 스레드가 동시에 "임계 구역"의 코드를 실행해서 문제가 발생하는 경우 이를 .. 2024. 4. 18.
멀티스레드 InterLocked namespace ServerCore { class Program { static int number = 0; static void Thread_1() { for (int i = 0; i < 100000; i++) { number++; } } static void Thread_2() { for (int i = 0; i < 100000; i++) { number--; } } static void Main(string[] args) { Task t1 = new Task(Thread_1); Task t2 = new Task(Thread_2); t1.Start(); t2.Start(); Task.WaitAll(t1, t2); Console.WriteLine(number); } } } 1씩 100,000 번을 더.. 2024. 4. 18.
메모리 배리어 1. 메모리 배리어 정의 중앙처리장치(CPU)나 컴파일러에게 특정 연산의 순서를 강제하는 기능 2. 메모리 배리어가 없을시의 문제점 중앙처리장치와 컴파일러는 멀티스레드 환경에서 개발자가 의도한 로직 순서를 뒤바꿀 수도 있는데 로직 실행 순서가 바뀌어 실행된다면 잘못된 결과가 발생할 수 있다. 3. 메모리 배리어의 용도 - 코드 재배치 억제 int a = 0; void Thread_A() { a = 10; console.writeLine(a); } void Thread_A() { a = 10; Thread.MemoryBarrier(); console.writeLine(a); } 멀티 스레드 환경에서 메모리 배리어가 없으면 무조건 "a=10" 라는 연산이 처음부터 실행되는 게 아니라 "console.writ.. 2024. 4. 18.
728x90
반응형