[C++๊ณผ ์ธ๋ฆฌ์ผ๋ก ๋ง๋๋ MMORPG ๊ฒ์ ๊ฐ๋ฐ ์๋ฆฌ์ฆ] Part4: ๊ฒ์ ์๋ฒ
๋คํธ์ํฌ/๋ฉํฐ์ฐ๋ ๋/์ด์์ฒด์ ๋ฑ ํต์ฌ ์ ๊ณต ์ง์์ ๊ณต๋ถํ๊ณ ๊ฒ์ ์๋ฒ๋ฅผ ๋ฐ๋ฅ๋ถํฐ ๋ง๋ค์ด๋ณด๋ฉด์ MMORPG ๊ธฐ์ ์ ํ์ตํ๋ ๊ฐ์์ ๋๋ค. ์ ์ ์๋ฒ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์์ผ ์ ๋ฐ์ ์ธ ์ง์์ ๋ชจ๋ ํ์ด๋ณด๊ธฐ์ ์ด๋ ํ๋ก์ ํธ์ ํฉ๋ฅํ๋๋ผ๋ ๋นํฉํ์ง ์๊ณ ์ ์ํ ์ ์๋ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์๊ฒ ๋ฉ๋๋ค.
์๊ฐ์ 2,410๋ช
๋์ด๋ ์ค๊ธ์ด์
์๊ฐ๊ธฐํ ๋ฌด์ ํ

- ํด๊ฒฐ
๊ฒ์ ์๋ฒ Stateful, Stateless ์ง๋ก ๊ณ ๋ฏผ
๋จผ์ ๊ฐ์ ์ฌ๋ฐ๊ฒ ๋ณด๊ณ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.์ด ๊ฐ์๋ฅผ ์ฌ๋ฉด์ ์ข์ํ๋ ๊ฒ์ ๊ฐ๋ฐ์ ์ํด ์ด๋ค ์ฅ๋ฅด๋ ๋ง๋ค ์ ์๋ ๋ฅ๋ ฅ์ ํค์ฐ๋๊ฒ ๋ชฉํ์์ต๋๋ค.๊ฐ์๋ฅผ ๊ณต
๋คํธ์ํฌMMORPGwindows-serverrhfnajfl0
ใป
10์ผ ์
0
54
1
- ํด๊ฒฐ
WaitOnAddress์ Sleep์ ์ฐจ์ด ์ง๋ฌธ
Sleep()์ ํ์ฌ์ ํ์ ์ฌ๋ผ์ด์ค๋ฅผ ๋ชจ๋ ํฌ๊ธฐํ๊ณ ์ธ์๋ก ๋ค์ด์จ ๊ฐ ๋งํผ ์ค์ผ์ฅด๋ง์ ํฌ๊ธฐํ๋ ๊ฒ์ ๋ง์ง๋ง ์ฌ์ ํ 'Ready ์ํ'์ธ ๋ฐ๋ฉด WaitOnAddress()๋ ์์ 'Blocked ์ํ'๋ก ๋น ์ ธ ๋ฒ๋ ค์,
๋คํธ์ํฌMMORPGwindows-serverUlfric0531
ใป
14์ผ ์
0
52
1
- ๋ฏธํด๊ฒฐ
๊ถ๊ธํ๊ฑฐ ์์ต๋๋ค.
ClientSocket ์ฆ Session ์ ์์ผ์ CreateIoCompletionPort ๋ฅผ ์ด์ฉํ์ฌ ๋ฑ๋กํด์ฃผ์ด์ผ์ง๋ง IOCP ํ๋ก ๋ถํฐ ํต์ง๊ฐ ์ค์ง
๋คํธ์ํฌMMORPGwindows-serverpis ure
ใป
ํ ๋ฌ ์
0
55
2
- ํด๊ฒฐ
JobTimer ๊ตฌ๋ ์ค๋ ๋
๋ชจ๋ ์ค๋ ๋๊ฐ distributeํ์ง ์๊ณ , ๋ฉ์ธ ์ค๋ ๋๋ง ๋ด๋นํ๊ฒ ํด์ฃผ๋ฉด ๋ฝ์ ์ก์ ํ์๋ ์์ง ์๋์?
๋คํธ์ํฌMMORPGwindows-server๋๋ธ
ใป
2๋ฌ ์
0
88
2
- ๋ฏธํด๊ฒฐ
TryPop() ๋์ ๊ด๋ จ ์ง๋ฌธ
0์ด ์๋ -countIncrease์ ๋น๊ตํ๋ ์ด์ ๊ฐ ๋ค๋ฅธ ์ฐ๋ ๋๋ค์ ์ํด internalCount๊ฐ ์ด๋ฏธ ์์๊ฐ ๋์ด์๋ ๊ฒฝ์ฐ countIncrease์ ์ฆ๊ฐ๋ก ์ธํด ์ ํํ 0์ด ๋๋ ์ํฉ์ผ๋, ์ญ์
๋คํธ์ํฌMMORPGwindows-server๊น์
ใป
3๋ฌ ์
0
65
1
- ๋ฏธํด๊ฒฐ
๋ก๋๋งต C#์๋ฒ C++์๋ฒ ๋ฐฉํฅ์ฑ ์ง๋ฌธ
์๋ ํ์ธ์ ๊ฐ์ฌ๋ C++ IOCP๊ฐ์ ์ ๋ง ๊ฐํํ๋ฉด์ ์ ๋ค์์ต๋๋ค. ( ๋์๊น์ง 50๋ฒ์ ํ๊ฑฐ๊ฐ๋ค์ ) ์์ง์ ๊ฐ์ ์ ๊ณตํด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.ํ์ฌ ์ ๋ ๋ํ๊ต 3ํ๋ ๋ณตํ ์ค๋น์ค์ด๊ณ , ์กธ์ ์
๋คํธ์ํฌMMORPGwindows-server๋๋ธ
ใป
3๋ฌ ์
0
116
2
- ๋ฏธํด๊ฒฐ
์ค๋ ๋ id๋ฅผ ์ถ๋ ฅํ ๋ ๋ฉ์ธ์ค๋ ๋ id๋ ์ถ๋ ฅ๋๋์?
๋ฉ์ธ์ค๋ ๋๊ฐ 1๋ฒ์ ๋จน๋๊ฒ๊น์ง๋ ์ดํดํ๋๋ฐ ๊ทธ ์ดํ์ ์๋ 1๋ถํฐ 6๊น์ง ์ ๋ถ ์ถ๋ ฅ๋๋๊ฒ์ด ๋ง๋์? ๋ฃจํค์ค๋ ํ๋ฉด์์๋ 2์์ 6๊น์ง๋ง ์ถ๋ ฅ์ด ๋๋๊ฑธ๋ก ๋ณด์ฌ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค <
๋คํธ์ํฌMMORPGwindows-serverkamdabin3
ใป
3๋ฌ ์
0
54
1
- ๋ฏธํด๊ฒฐ
์๋ช ์ฃผ๊ธฐ๋ฅผ ์ํ ์๋์ ๋ณต์ฌ
์๋ ํ์ธ์ ๊ฐ์ ์ ๋ง ๊ฐํํ๋ฉด์ ์ ์๊ฐํ๊ณ ์์ต๋๋ค. Job์์ ๋ณดํธ์ฐธ์กฐ๋ก ๋ฐ์๋๋ฐ forward๋ก ํ์ง ์์ ๊ฒ์ Ref๋ค์ ์๋ช ์ฐ์ฅ์ ํด์ฃผ๊ธฐ ์ํด ์๋์ ์ผ๋ก ๋ณต์ฌํ๊ธฐ ์ํ ์๋์ผ๊น์?J
๋คํธ์ํฌMMORPGwindows-server๋๋ธ
ใป
3๋ฌ ์
0
63
2
- ๋ฏธํด๊ฒฐ
๋ฝํ๋ฆฌ์ ์ค๋ฌด์์ ์ฌ์ฉ ์ง๋ฌธ
๋ฝํ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง์๋๋ค๊ณ ํ์ จ๋๋ฐ ๋ฝํ๋ฆฌ๋ฅผ ์จ์ผ ์๋ฒ์ ์ฑ๋ฅ์ด ์ ๋๋ก ๋์ค๋๊ฒ ์๋๊ฐ์? ์คํ๋ ค ๋๋ฌด ์ด๋ ค์์ ์ ๋๋ก ๋ง๋ ๊ฒ์ด ์๋๋ผ๋ฉด ์๋ฒ๊ฐ ์ฃฝ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ ์ ์๊ธฐ๋๋ฌธ์ ์์ฐ๋ ๊ฑด๊ฐ์?<p style="
๋คํธ์ํฌMMORPGwindows-serverkamdabin3
ใป
4๋ฌ ์
0
107
2
- ๋ฏธํด๊ฒฐ
32bit threadID์ 16๋นํธ ์์ WriteFlag์ ๋ํด
32๋นํธ์ง๋ฆฌ threadID๋ฅผ ๋นํธ ์ฐ์ฐ์ผ๋ก 16๋นํธ ์ฎ๊ฒจ์ค๋ค ์งค๋ผ์ค ๊ฒ์ WriteFlag์ ๋ด๋ ๊ณผ์ ์์ ์์ค์ด ์ผ์ด๋๋๊ฑฐ ์๋๊ฐ์?<img src="https://cdn.inflearn.com/public/
๋คํธ์ํฌMMORPGwindows-server๋๋ธ
ใป
4๋ฌ ์
0
79
2
- ํด๊ฒฐ
mutex์ sleep ์ฐจ์ด์
mutex๋ ์ปค๋๋ก sleep๊ฐ ๋๋๊ฑธ๋ก ์๊ณ ์๋๋ฐ ์คํ๋ฝ์ ๊ตฌํํ๋ฉด์ sleep๋ฅผ ๊ฐ์ด ๊ตฌํํ๋๊ฒ๊ณผ mutex๋ฅผ ์ฌ์ฉํ๋๊ฒ์ ์ฐจ์ด๊ฐ ๊ถ๊ธํฉ๋๋ค
๋คํธ์ํฌMMORPGwindows-serverkamdabin3
ใป
4๋ฌ ์
0
92
1
- ๋ฏธํด๊ฒฐ
์ค๋ฌด์์๋ ์ด๋ ํ ์ฝ๋ ์คํ์ผ์ ์ฌ์ฉํ๋์ง ๊ถ๊ธํฉ๋๋ค
๋ฌผ๋ก ํ์ฌ๋ง๋ค ๋ค๋ฅด๊ณ ๊ฐ ํ์ฌ์ ๊ธฐ์กด ์คํ์ผ์ ๋ฐ๋ผ์ผ ํ๋๊ฒ ๋ง์ง๋ง ๋ ํํ๋ ์ ์ฅ์์๋ clang-format์ด ์ ๊ณตํด์ฃผ๋ ํํธ๋ค, ๊ตฌ๊ธ ์คํ์ผ ๊ฐ์ด๋ ํน์ ์ธํฐ
๋คํธ์ํฌMMORPGwindows-server๊ฒจ์ธ
ใป
5๋ฌ ์
0
131
2
- ๋ฏธํด๊ฒฐ
Stomp Allocator์ Releaseํจ์์ ๋ํ ์ง๋ฌธ์ ๋๋ค.
์๋ค ๋ค์ด์, ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ 0x1000~0x3000์ด๊ณ , ์ค์ ์ฌ์ฉํ๋ ค๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ 0x2008๋ก ๋ฐํ๋ฐ์๋ค๊ณ ๊ฐ์ ํ ๋,const int64 add
๋คํธ์ํฌMMORPGwindows-serverasm1133
ใป
5๋ฌ ์
0
84
1
- ๋ฏธํด๊ฒฐ
๊ณต๋ถ๋ฒ ๊ด๋ จํด์
๋ฃจํค์ค๋ ๊ฐ์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ์๋ฒ ๊ฐ์ ์ฌ๋ฐ๊ฒ ๋ฃ๊ณ ์๋๋ฐ ์ ๊ฐ ๊ณต๋ถ ํ๋ ๋ฐฉ๋ฒ์ด ์๊ฐ์ด ๋ง์ด ๋๋๋ฐ ์๊ฐ์ ๋ง์ด ์ฐ๋ ๊ฑฐ์ ๋นํด ํ์ต์ ํฌ๊ฒ ๋์์ด ๋๋ ๊ฒ ๊ฐ์ง ์์์ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.์ ๋ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ณต
๋คํธ์ํฌMMORPGwindows-serverlayer08
ใป
6๋ฌ ์
0
159
2
- ๋ฏธํด๊ฒฐ
MakeShared ํจ์ ๊ด๋ จ
52๊ฐ ServerService ์๊ฐ ์ค 13:54 ๋์ MakeSharedํจ์๋ฅผ ์ด์ฉํด์ shared_ptr์ ์์ฑํด์ฃผ๋ ๋ถ๋ถ์ด ์๋๋ฐ, ๋๊ฐ์ด ๋ฐ๋ผํ๋ ์ค ์ ํ๋ก์ ํธ์์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.<p st
๋คํธ์ํฌMMORPGwindows-server์์ฑ์ ์์
ใป
7๋ฌ ์
0
91
1
- ๋ฏธํด๊ฒฐ
์ง๊ธ๊น์ง ์๋ฒ์ฝ์ด์์ ๋ง๋ ๋ด์ฉ์ ๋ํด ๊ถ๊ธํ ์ ์ด ์์ด์ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์ง๊ธ๊น์ง ๊ฐ๋ฐํ ์๋ฒ์ฝ์ด๋ IOCP๊ธฐ๋ฐ์ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน ๋ฐฉ์์ด๋ผ ์๊ฐ๋จ๋๋ค.Send์์๋ SendBuffer๋ฅผ sendEvent์ ๋ฑ๋กํ ๋ค์ Scatter-Gather๋ก ๋ชจ์์ ::WSASend๋ก ์ก์ ์ ์ํํ๋ ๊ฒ
๋คํธ์ํฌMMORPGwindows-server๊น๊ธฐํ
ใป
7๋ฌ ์
0
124
2
- ๋ฏธํด๊ฒฐ
์ด์์ฒด์ ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค
์ด์์ฒด์ ๋ ๊ฐ์ด ๊ณต๋ถ๋ฅผ ํ๊ณ ์ถ์ด ์์ ๊ณต๋ฃก์ฑ ์ด๋ผ๋ ์ด์์ฒด์ ์ฑ ์ ์ฌ์ ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค ์ด์์ฒด์ ๋ฅผ ์ฒ์๋ถํฐ ๋ง๋ค์ด๋ณด๋ ์ค์ต ์ฑ ๋ค์ ๋ฐ๋ผํด๋ณด๋ฉด ์ด๋ผ๊ณ ํ์ จ
๋คํธ์ํฌMMORPGwindows-serverkamdabin3
ใป
7๋ฌ ์
0
109
1
- ๋ฏธํด๊ฒฐ
sendํ๋ ค๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด memcpy์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
<img src="https://cdn.inflearn.com/public/files/posts/60f5794c-0d84-4cdb-8059-48fcb8cab2ee/9fee544a-5b56-4b0e-aa1c-589faab2c282.png" media-type="img"
๋คํธ์ํฌMMORPGwindows-serverDodontak
ใป
7๋ฌ ์
0
99
2
- ๋ฏธํด๊ฒฐ
๋ฉ๋ชจ๋ฆฌ ํ ์ง๋ฌธ์์ต๋๋ค.
์ฐ์ ์ข์๊ฐ์ ๋ง๋ค์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์ ๊ฐ ์ง๋ฌธ๋๋ฆด๊ฑด ๋ฉ๋ชจ๋ฆฌํ์ 1024๊น์ง๋ 32๋ฐ์ดํธ๋จ์๋ก ๋ง๋๋๋ฐ, ๊ทธ๋ฌ๋ฉด 32๋ฐ์ดํธ์ ์ฉ ํ 64๋ฐ์ดํธ ์ ์ฉ ํ ์ด๋ ๊ฒ ๋ง
๋คํธ์ํฌMMORPGwindows-serverpnj991122
ใป
8๋ฌ ์
0
105
1
- ๋ฏธํด๊ฒฐ
๋ฉ๋ชจ๋ฆฌ ํ ์ง๋ฌธ์์ต๋๋ค.
์ฐ์ ์ข์๊ฐ์ ๋ง๋ค์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์ ๊ฐ ์ง๋ฌธ๋๋ฆด๊ฑด ๋ฉ๋ชจ๋ฆฌํ์ 1024๊น์ง๋ 32๋ฐ์ดํธ๋จ์๋ก ๋ง๋๋๋ฐ, ๊ทธ๋ฌ๋ฉด 32๋ฐ์ดํธ์ ์ฉ ํ 64๋ฐ์ดํธ ์ ์ฉ ํ ์ด๋ ๊ฒ ๋ง
๋คํธ์ํฌMMORPGwindows-serverpnj991122
ใป
8๋ฌ ์
0
74
1






