반응형 non-blocking2 [04주차] I/O 모델 한국공학대학교 정내훈 교수님 4-1 게임 서버 프로그래밍 수업 중 일부입니다. - 게임 프로그램 특징 : 게임의 진행 속도는 CPU의 속도가 아니라 실제 시간. : REAL TIME → 내가 명령을 입력할 때까지 기다리지 않음!!!! (적어도 렌더링은 계속 됨) : INDEPENDENCE → 모든 객체가 독립적 행동 (게임 진행 정해져 있지 않음 + 플레이어 행동 안 기다림, non-blocking) - Non-blocking I/O : 기존 Blocking 소켓은 I/O 작업을 수행할 때 해당 작업이 완료될 때까지 대기 : Non-blocking → 작업 수행 시 작업이 완료되지 않아도 즉시 반환 : WSARecv() 호출을 즉시 완료하지 못하는 경우 1) 도착한 데이터 없으면, 2) WSAEWOULD.. 2024. 4. 22. [04주차] 메모리 일관성 - CPU 주의점 : 저번 시간 상호 배제에 이어 메모리 일관성 문제도 고려해야 함 : 지금까지 프로그램은 공유 메모리에 대한 접근(읽기/쓰기)을 atomic하다고 가정함 → 컴파일러가 제대로 기계어로 번역했다면 → atomic : 메모리의 접근이 순간적으로 행해지며, 서로 겹치지 않고 실행 결과 순서가 정해지면, 모든 쓰레드에서 같은 순서로 보임 → 그러나 PC에서의 메모리 접근은 atomic이 아님 (메모리에 쓴 순서대로 메모리의 내용이 관측되지 않음) : 0번 쓰레드도 false를 읽고 1번도 false를 읽음 : 저번 시간에 했던 피터슨 알고리즘에서 std::atomic_thread_fence(std::memory_order_seq_cst)를 제외한 경우 아래의 결과처럼.. 2024. 4. 18. 이전 1 다음 728x90 반응형