GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Destination Move Packet
  • Game Room
  • protobuf
  • Network Worker
  • client
  • Player Move Packet
  • job queue
  • Other Character
  • Direct11
  • UE5
  • core
  • Algorithm Strategies
  • session
  • Game Server
  • c++
  • server
  • GAME Client
  • RPG Game
  • Player State
  • Direct3D

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[SERVER] Atomic
Create Game/[Window API] Game Client & Game Server

[SERVER] Atomic

2023. 1. 5. 23:47

1. Atomic

1.1 Atomic

 - 모든 쓰레드들이 수정 순서에 동의를 해야하는 경우는 바로 모든 연산들이 원자적일 때 가능

 - 원자적인 연산이 아닌 경우

   - 같은 수정 순서를 관찰할 수 있음이 보장되지 않음

   - 직접 적절한 동기화 방법을 통해 처리

     - 위 방식을 지키지 않을 시 프로그램이 정의되지 않은 행동을 함

1.2 Main

 - atomic의 템플릿 인자로 원자적으로 만들고 싶은 타입 전달

   - atomic 객체에서 제공하는 함수들을 통해 여러가지 원자적인 연산들 수행 가능

int main()
{
    vector<std::thread> workers;
    std::atomic<int> counter(0);

    workers.push_back(std::thread(worker, std::ref(counter)));
    workers.push_back(std::thread(worker, std::ref(counter)));
    
    for (int i = 0; i < 2; i++) workers[i].join();

    cout << counter << endl;
}

1.3 worker

 - mutex나 condition variable로 보호하지 않아도 counter의 값이 정상적으로 출력

void worker(std::atomic<int>& counter)
{
    for (int i = 0; i < 10000; i++) counter++;
}

 - 컴파일러로부터 어셈블리 코드 분석

   - atomic operator를 사용

Assembly

저작자표시 (새창열림)

'Create Game > [Window API] Game Client & Game Server' 카테고리의 다른 글

[SEVER] TCP Server  (0) 2023.01.10
[SERVER] Memory Order  (0) 2023.01.05
[SERVER] Condition Variable  (0) 2023.01.03
[SERVER] Producer & Consumer  (0) 2023.01.03
[SERVER] Dead Lock  (0) 2023.01.03
    'Create Game/[Window API] Game Client & Game Server' 카테고리의 다른 글
    • [SEVER] TCP Server
    • [SERVER] Memory Order
    • [SERVER] Condition Variable
    • [SERVER] Producer & Consumer
    GameChoi
    GameChoi

    티스토리툴바