Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1099)

KoreanFoodie's Study

Boost.Asio ์˜ ๊ฐœ๋… ๋ฐ ์š”์•ฝ ์ •๋ฆฌ

Asio ๋Š” Asynchronous IO ์˜ ์•ฝ์ž์ด๋‹ค. Asio ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฉ์–ด๋“ค์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. IO Service ํด๋ž˜์Šค : ์ปค๋„์—์„œ ๋ฐœ์ƒํ•œ ์ž…์ถœ๋ ฅ ์ด๋ฒคํŠธ๋ฅผ ๋””์ŠคํŒจ์น˜ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰. ๋””์ŠคํŒจ์น˜๋ž€, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์ด ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. IO Service ํด๋ž˜์Šค๋Š” ์ปค๋„์—์„œ ๋ฐœ์ƒํ•œ ๋„คํŠธ์›Œํฌ์ƒ์˜ ์ ‘์† ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ข…๋‹จ์ (Endpoint) : ๋„คํŠธ์›Œํฌ ์ƒ์˜ ํŠน์ • ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ. ๊ตฌ์ฒด์ ์œผ๋กœ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ์˜ ํ•œ ์Œ์„ ์ข…๋‹จ์ ์ด๋ผ๊ณ  ํ•จ. DNS(Domain Name Server) : Boost Asio ์—์„œ๋Š” ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ด์šฉ, IP ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด์–ด ์ข…๋‹จ์ ์„ ๊ตฌํ•œ๋‹ค. ..

Game Dev/Game Server 2022. 11. 1. 14:09
IOCP์˜ ๊ฐœ๋… ๋ฐ ์š”์•ฝ ์ •๋ฆฌ

IOCP๋Š” CPU ๊ฐœ์ˆ˜๋งŒํผ๋งŒ ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋Š” ์„œ๋ฒ„์ด๋‹ค. IOCP ๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋“  Send/Recv ๋Š” Overlapped I/O ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, ์ฝœ๋ฐฑํ•จ์ˆ˜๋“ค์„ ๋™์‹œ์— ๋™์ž‘ํ•ด์„œ ์„ฑ๋Šฅ์„ ๋†’์ธ๋‹ค. IOCP๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” IOCP ๊ฐ์ฒด๋Š” ์ปค๋„ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค. ์ปค๋„ ๋‚ด์—๋Š” DEVICE LIST ๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์†Œ์ผ“์„ IOCP ์— ๋“ฑ๋กํ•˜๋ฉด IOCP ๊ฐ์ฒด๋Š” DEVICE_LIST ์— ์†Œ์ผ“๋“ค์„ ๋“ฑ๋กํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” DEVICE_LIST ๋ฅผ ์ง์ ‘ ๋ณด๊ฑฐ๋‚˜ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค. ํ๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝํ•ด ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค : I/O ๋””๋ฐ”์ด์Šค(์†Œ์ผ“, FD) IOCP ์— ๋“ฑ๋ก : CreateIoCompletionPrt ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋””๋ฐ”์ด์Šค์™€ CompletionPort(์ดํ•˜ CP) ๋ฅผ ๋ฐ”์ธ..

Game Dev/Game Server 2022. 11. 1. 14:07
๊ฒŒ์ž„ ์ˆ˜ํ•™ - ๋ณ€ํ™˜ ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ

์ด๋“์šฐ๋‹˜์˜ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„์ˆ˜ํ•™' ์ฑ…์„ ๋ณด๋ฉฐ ์ข‹์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด, ์ฑ…์„ ๊ตฌ๋งคํ•ด ์ง์ ‘ ์ฝ์–ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋ณ€ํ™˜ ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜ ํ–‰๋ ฌ๋“ค์˜ ์—ญํ–‰๋ ฌ์„ ์•Œ์•„๋ณด์ž. ํฌ๊ธฐ ๋ณ€ํ™˜ํ–‰๋ ฌ ๊ฐ ๊ธฐ์ €๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฐ a, b ๋งŒํผ ํ‚ค์šฐ๋Š” ํฌ๊ธฐ ๋ณ€ํ™˜ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ „๋‹จ ๋ณ€ํ™˜ํ–‰๋ ฌ ํ‰ํ–‰์‚ฌ๋ณ€ํ˜• ์ฒ˜๋Ÿผ ๋ฏธ๋„๋Ÿฌ์ง€๊ฒŒ ์ƒ๊ธด ์ „๋‹จ ๋ณ€ํ™˜ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํšŒ์ „ ๋ณ€ํ™˜ํ–‰๋ ฌ ํšŒ์ „ ๋ณ€ํ™˜ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. θ ๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋Š” ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, -θ ๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋Š” ํ–‰๋ ฌ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋œ๋‹ค! ์‚ผ๊ฐํ•จ์ˆ˜์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Game Dev/Game Math 2022. 10. 29. 09:47
Effective Modern C++ ๋‚ด์šฉ ์š”์•ฝ ์ด ์ •๋ฆฌ ๋ฆฌ์ŠคํŠธ

์•ฝ ๋‘ ๋‹ฌ๊ฐ„ ์ฝ์œผ๋ฉฐ ์ •๋ฆฌํ•˜๊ณ  ์š”์•ฝํ•œ Effective C++ ์™€ Effective Modern C++ ๊ฒŒ์‹œ๊ธ€๋“ค์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ ์š”์•ฝ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํ•˜์‹ค๋•Œ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๋ฐ”๋ผ๋ฉฐ, ์ง์ ‘ ์‚ฌ์„œ ์ฝ์–ด๋ณด์‹œ๊ธธ ๊ฐ•์ถ”๋“œ๋ฆฝ๋‹ˆ๋‹ค! 1์žฅ ํ˜•์‹ ์—ฐ์—ญ ํ•ญ๋ชฉ 1: ํ…œํ”Œ๋ฆฟ ํ˜•์‹ ์—ฐ์—ญ ๊ทœ์น™์„ ์ˆ™์ง€ํ•˜๋ผ ํ•ญ๋ชฉ 2: auto์˜ ํ˜•์‹ ์—ฐ์—ญ ๊ทœ์น™์„ ์ˆ™์ง€ํ•˜๋ผ ํ•ญ๋ชฉ 3: decltype์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ˆ™์ง€ํ•˜๋ผ ํ•ญ๋ชฉ 4: ์—ฐ์—ญ๋œ ํ˜•์‹์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‘๋ผ 2์žฅ auto ํ•ญ๋ชฉ 5: ๋ช…์‹œ์  ํ˜•์‹ ์„ ์–ธ๋ณด๋‹ค๋Š” auto๋ฅผ ์„ ํ˜ธํ•˜๋ผ ํ•ญ๋ชฉ 6: auto๊ฐ€ ์›์น˜ ์•Š์€ ํ˜•์‹์œผ๋กœ ์—ฐ์—ญ๋  ๋•Œ์—๋Š” ๋ช…์‹œ์  ํ˜•์‹์˜ ์ดˆ๊ธฐ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ผ 3์žฅ ํ˜„๋Œ€์  C++์— ์ ์‘ํ•˜๊ธฐ ํ•ญ๋ชฉ 7: ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ๊ด„ํ˜ธ(())์™€ ์ค‘๊ด„ํ˜ธ({})๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ผ ํ•ญ๋ชฉ 8: 0๊ณผ NULL๋ณด๋‹ค nullptr๋ฅผ ์„ ..

Tutorials/C++ : Advanced 2022. 10. 27. 12:24
Effective C++ ๋‚ด์šฉ ์š”์•ฝ ์ด ์ •๋ฆฌ ๋ฆฌ์ŠคํŠธ

์•ฝ ๋‘ ๋‹ฌ๊ฐ„ ์ฝ์œผ๋ฉฐ ์ •๋ฆฌํ•˜๊ณ  ์š”์•ฝํ•œ Effective C++ ์™€ Effective Modern C++ ๊ฒŒ์‹œ๊ธ€๋“ค์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ ์š”์•ฝ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํ•˜์‹ค๋•Œ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๋ฐ”๋ผ๋ฉฐ, ์ง์ ‘ ์‚ฌ์„œ ์ฝ์–ด๋ณด์‹œ๊ธธ ๊ฐ•์ถ”๋“œ๋ฆฝ๋‹ˆ๋‹ค! Chapter 1 C++์— ์™”์œผ๋ฉด C++์˜ ๋ฒ•์„ ๋”ฐ๋ฆ…์‹œ๋‹ค ํ•ญ๋ชฉ 1: C++๋ฅผ ์–ธ์–ด๋“ค์˜ ์—ฐํ•ฉ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๋Š” ์•ˆ๋ชฉ์€ ํ•„์ˆ˜ ํ•ญ๋ชฉ 2: #define์„ ์“ฐ๋ ค๊ฑฐ๋“  const, enum, inline์„ ๋– ์˜ฌ๋ฆฌ์ž ํ•ญ๋ชฉ 3: ๋‚Œ์ƒˆ๋งŒ ๋ณด์ด๋ฉด const๋ฅผ ๋“ค์ด๋Œ€ ๋ณด์ž! ํ•ญ๋ชฉ 4: ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ž Chapter 2 ์ƒ์„ฑ์ž, ์†Œ๋ฉธ์ž ๋ฐ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ํ•ญ๋ชฉ 5: C++๊ฐ€ ์€๊ทผ์Šฌ์ฉ ๋งŒ๋“ค์–ด ํ˜ธ์ถœํ•ด ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜๋“ค์— ์ด‰๊ฐ์„ ์„ธ์šฐ์ž ํ•ญ๋ชฉ 6: ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ํ•จ์ˆ˜๊ฐ€ ํ•„์š” ์—†์œผ๋ฉด ํ™•์‹คํžˆ ์ด๋“ค์˜ ์‚ฌ์šฉ์„ ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:32
Effective Modern C++ | ํ•ญ๋ชฉ 42 : ์‚ฝ์ž… ๋Œ€์‹  ์ƒ์„ฑ ์‚ฝ์ž…์„ ๊ณ ๋ คํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 42 : ์‚ฝ์ž… ๋Œ€์‹  ์ƒ์„ฑ ์‚ฝ์ž…์„ ๊ณ ๋ คํ•˜๋ผ ํ•ต์‹ฌ : 1. ์ด๋ก ์ ์œผ๋กœ, ์ƒ์„ฑ ์‚ฝ์ž… ํ•จ์ˆ˜๋“ค์€ ์ข…์ข… ํ•ด๋‹น ์‚ฝ์ž… ๋ฒ„์ „๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด์–ด์•ผ ํ•˜๋ฉฐ, ๋œ ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ๋Š” ์ ˆ๋Œ€๋กœ ์—†์–ด์•ผ ํ•œ๋‹ค. 2. ์‹ค์งˆ์ ์œผ๋กœ, (1) ์ถ”๊ฐ€ํ•  ๊ฐ’์ด ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐ์ •๋˜๋Š” ๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐ์ •๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์ƒ์„ฑ๋˜๊ณ , (2) ์ธ์ˆ˜ ํ˜•์‹(๋“ค)์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋Š” ํ˜•์‹๊ณผ ๋‹ค๋ฅด๊ณ , (3) ๊ทธ ๊ฐ’์ด ์ค‘๋ณต๋œ ๊ฐ’์ด์–ด๋„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ƒ์„ฑ ์‚ฝ์ž… ํ•จ์ˆ˜๊ฐ€ ์‚ฝ์ž… ํ•จ์ˆ˜๋ณด๋‹ค ๋น ๋ฅผ ๊ฐ€๋Šฅ์„ฑ์ด ์•„์ฃผ ํฌ๋‹ค. 3. ์ƒ์„ฑ ์‚ฝ์ž… ํ•จ์ˆ˜๋Š” ์‚ฝ์ž… ํ•จ์ˆ˜๋ผ๋ฉด ๊ฑฐ๋ถ€๋‹นํ–ˆ์„ ํ˜•์‹ ๋ณ€ํ™˜๋“ค์„ ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:09
Effective Modern C++ | ํ•ญ๋ชฉ 41 : ์ด๋™์ด ์ €๋ ดํ•˜๊ณ  ํ•ญ์ƒ ๋ณต์‚ฌ๋˜๋Š” ๋ณต์‚ฌ ๊ฐ€๋Šฅ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ’ ์ „๋‹ฌ์„ ๊ณ ๋ คํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 41 : ์ด๋™์ด ์ €๋ ดํ•˜๊ณ  ํ•ญ์ƒ ๋ณต์‚ฌ๋˜๋Š” ๋ณต์‚ฌ ๊ฐ€๋Šฅ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ’ ์ „๋‹ฌ์„ ๊ณ ๋ คํ•˜๋ผ ํ•ต์‹ฌ : 1. ์ด๋™์ด ์ €๋ ดํ•˜๊ณ  ํ•ญ์ƒ ๋ณต์‚ฌ๋˜๋Š” ๋ณต์‚ฌ ๊ฐ€๋Šฅ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ’ ์ „๋‹ฌ์ด ์ฐธ์กฐ ์ „๋‹ฌ๋งŒํผ์ด๋‚˜ ํšจ์œจ์ ์ด๊ณ , ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ๊ณ , ์‚ฐ์ถœ๋˜๋Š” ๋ชฉ์  ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋„ ๋” ์ž‘๋‹ค. 2. ์™ผ๊ฐ’ ์ธ์ˆ˜์˜ ๊ฒฝ์šฐ ๊ฐ’ ์ „๋‹ฌ(์ฆ‰, ๋ณต์‚ฌ ์ƒ์„ฑ) ๋‹ค์Œ์˜ ์ด๋™ ๋ฐฐ์ •์€ ์ฐธ์กฐ ์ „๋‹ฌ ๋‹ค์Œ์˜ ๋ณต์‚ฌ ๋ฐฐ์ •๋ณด๋‹ค ํ›จ์”ฌ ๋น„์Œ€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. 3. ๊ฐ’ ์ „๋‹ฌ์—์„œ๋Š” ์ž˜๋ฆผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค ๋งค๊ฐœ๋ณ€์ˆ˜ ํ˜•์‹์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ’ ์ „๋‹ฌ์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. Widget ํด๋ž˜..

Tutorials/C++ : Advanced 2022. 10. 26. 10:09
Effective Modern C++ | ํ•ญ๋ชฉ 40 : ๋™์‹œ์„ฑ์—๋Š” std::atomic ์„ ์‚ฌ์šฉํ•˜๊ณ , volatile ์€ ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ผ.

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 40 : ๋™์‹œ์„ฑ์—๋Š” std::atomic ์„ ์‚ฌ์šฉํ•˜๊ณ , volatile ์€ ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ผ. ํ•ต์‹ฌ : 1. std::atomic ์€ ๋ฎคํ…์Šค ๋ณดํ˜ธ ์—†์ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ๋™์‹œ์  ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ž‘์„ฑ์„ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค. 2. volatile ์€ ์ฝ๊ธฐ์™€ ๊ธฐ๋ก์„ ์ตœ์ ํ™”๋กœ ์ œ๊ฑฐํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํ•„์š”ํ•œ ๋„๊ตฌ์ด๋‹ค. std::atomic ์€ ๋ณดํ†ต ๋ฎคํ…์Šค๋ณด๋‹ค ๋” ํšจ์œจ์ ์ธ ๊ธฐ๊ณ„์–ด ๋ช…๋ น๋“ค๋กœ ๊ตฌํ˜„๋œ๋‹ค. std::atomic ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. std::atomi..

Tutorials/C++ : Advanced 2022. 10. 26. 10:09
Effective Modern C++ | ํ•ญ๋ชฉ 39 : ๋‹จ๋ฐœ์„ฑ ์‚ฌ๊ฑด ํ†ต์‹ ์—๋Š” void ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 39 : ๋‹จ๋ฐœ์„ฑ ์‚ฌ๊ฑด ํ†ต์‹ ์—๋Š” void ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ฐ„๋‹จํ•œ ์‚ฌ๊ฑด ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์กฐ๊ฑด ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜ ์„ค๊ณ„์—๋Š” ์—ฌ๋ถ„์˜ ๋ฎคํ…์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๊ฒ€์ถœ ๊ณผ์ œ์™€ ๋ฐ˜์‘ ๊ณผ์ œ์˜ ์ง„ํ–‰ ์ˆœ์„œ์— ์ œ์•ฝ์ด ์žˆ์œผ๋ฉฐ, ์‚ฌ๊ฑด์ด ์‹ค์ œ๋กœ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ๋ฐ˜์‘ ๊ณผ์ œ๊ฐ€ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. 2. ํ”Œ๋ž˜๊ทธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋Ÿฐ ๋‹จ์ ๋“ค์ด ์—†์ง€๋งŒ, ๋Œ€์‹  ์ฐจ๋‹จ์ด ์•„๋‹ˆ๋ผ ํด๋ง์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 3. ์กฐ๊ฑด ๋ณ€์ˆ˜์™€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์กฐํ•ฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜, ๊ทธ๋Ÿฐ ์กฐํ•ฉ์„ ์ด์šฉํ•œ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋ณต์žกํ•˜๋‹ค. 4. std::promise ์™€ ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:08
Effective Modern C++ | ํ•ญ๋ชฉ 38 : ์Šค๋ ˆ๋“œ ํ•ธ๋“ค ์†Œ๋ฉธ์ž๋“ค์˜ ๋‹ค์–‘ํ•œ ํ–‰๋™ ๋ฐฉ์‹์„ ์ฃผ์˜ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 38 : ์Šค๋ ˆ๋“œ ํ•ธ๋“ค ์†Œ๋ฉธ์ž๋“ค์˜ ๋‹ค์–‘ํ•œ ํ–‰๋™ ๋ฐฉ์‹์„ ์ฃผ์˜ํ•˜๋ผ ํ•ต์‹ฌ : 1. ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ์ž๋Š” ๊ทธ๋ƒฅ ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์ž๋ฃŒ ๋ฉค๋ฒ„๋“ค์„ ํŒŒ๊ดดํ•  ๋ฟ์ด๋‹ค. 2. std::async ๋ฅผ ํ†ตํ•ด ์‹œ๋™๋œ ๋น„์ง€์—ฐ ๊ณผ์ œ์— ๋Œ€ํ•œ ๊ณต์œ  ์ƒํƒœ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ์ž๋Š” ๊ทธ ๊ณผ์ œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋œ๋‹ค(๊ธฐ๋‹ค๋ฆฐ๋‹ค). ํ•ฉ๋ฅ˜ ๊ฐ€๋Šฅ std::thread ๋Š” ๋ฐ”ํƒ• ์‹œ์Šคํ…œ์˜ ์‹คํ–‰ ์Šค๋ ˆ๋“œ์— ๋Œ€์‘๋œ๋‹ค. ๊ทธ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ง€์—ฐ๋˜์ง€ ์•Š์€ ๊ณผ์ œ์— ๋Œ€ํ•œ ๋ฏธ๋ž˜ ๊ฐ์ฒด๋„ ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ์— ๋Œ€์‘๋œ๋‹ค. ๋”ฐ๋ผ์„œ std::thread ๊ฐ์ฒด์™€ ๋ฏธ๋ž˜ ๊ฐ์ฒด ๋ชจ๋‘ ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ํ•ธ๋“ค(ha..

Tutorials/C++ : Advanced 2022. 10. 26. 10:08