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

๋ชฉ๋ก2022/10 (117)

KoreanFoodie's Study

๊ฒŒ์ž„ ์ˆ˜ํ•™ - ๋ณ€ํ™˜ ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ

์ด๋“์šฐ๋‹˜์˜ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„์ˆ˜ํ•™' ์ฑ…์„ ๋ณด๋ฉฐ ์ข‹์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด, ์ฑ…์„ ๊ตฌ๋งคํ•ด ์ง์ ‘ ์ฝ์–ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋ณ€ํ™˜ ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜ ํ–‰๋ ฌ๋“ค์˜ ์—ญํ–‰๋ ฌ์„ ์•Œ์•„๋ณด์ž. ํฌ๊ธฐ ๋ณ€ํ™˜ํ–‰๋ ฌ ๊ฐ ๊ธฐ์ €๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฐ 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
Effective Modern C++ | ํ•ญ๋ชฉ 37 : std::thread ๋“ค์„ ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ํ•ฉ๋ฅ˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ผ

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

Tutorials/C++ : Advanced 2022. 10. 26. 10:07
Effective Modern C++ | ํ•ญ๋ชฉ 36 : ๋น„๋™๊ธฐ์„ฑ์ด ํ•„์ˆ˜์ผ ๋•Œ์—๋Š” std::launch::async ๋ฅผ ์ง€์ •ํ•˜๋ผ

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

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