본문 바로가기
게임서버관련

하드웨어 최적화

by hallojih 2023. 10. 13.

멀티 쓰레드 환경에서 명령한 순서대로 실행되지 않고 멋대로 순서를 뒤바꿔어서 실행하는 경우가 생김.

 

메모리 베리어

2가지 용도로 사용

  1. 코드 재배치 억제
  2. 가시성

1. 코드 재배치 억제

1) Full Memory Barrier (ASM MFENCE, C# Thread.MemoryBarrier)

: Store/Load 둘 다 막는다 (store:변수에 넣는 것/load: 변수에서 끄집어 내는 것)

2) Store Memory Barrier (ASM SFENCE)

: Store만 막는다.

3) Load Memory Barrier (ASM LFENCE)

: Load만 막는다.

 

2. 가시성

쓰레드 마다

Thread.MemoryBarrier(); 해서 동기화 작업.

간접적으로 넣기도 함.

 

ex) store가 연속적으로 발생할 경우

store하고 Thread.MemoryBarrier();

store하고 Thread.MemoryBarrier(); 해주어서 가시성 확보

 

 

728x90
반응형

'게임서버관련' 카테고리의 다른 글

멀티쓰레드  (0) 2022.09.02
게임 서버 종류  (0) 2022.08.31

댓글