ÄÜÅÙÃ÷»ó¼¼º¸±â

¸ð´ø C++·Î ¹è¿ì´Â µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö
¸ð´ø C++·Î ¹è¿ì´Â µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö
  • ÀúÀÚ<¶óÀÌ³Ê ±×¸²> Àú/<¹èÀå¿­> ¿ª
  • ÃâÆÇ»çÁ¦ÀÌÆà
  • ÃâÆÇÀÏ2020-09-03
  • µî·ÏÀÏ2021-05-24
º¸À¯ 1, ´ëÃâ 0, ¿¹¾à 0, ´©Àû´ëÃâ 10, ´©Àû¿¹¾à 1

Ã¥¼Ò°³

C++ ÇÁ·Î±×·¡¸Ó¶ó¸é ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÒ µ¿½Ã¼ºÀÇ ¸ðµç °Í!
C++ µ¿½Ã¼º ÇÁ·Î±×·¡¹ÖÀ» ¸¶½ºÅÍÇÒ ¼ö Àִ ½Ç¿ëÀû ¾È³»¼­!

À̠åÀº C++ µ¿½Ã¼ºÀÇ ÇöÀç¿Í ¹Ì·¡¸¦ Å½ÇèÇϴ ¿©Çà °¡À̵å´Ù. ¸ð´ø C++ÀÇ µ¿½Ã¼º À̾߱⸦ ¼ö¸¹Àº ¿¹Á¦ ÄÚµå¿Í ÇÔ²² ±íÀÌ ÀÖ°Ô Ç®¾î³ÂÀ¸¸ç, À̸¦ ÅëÇØ ¿©·¯ºÐÀº À̷аú ½ÇÁ¦¸¦ ±ÕÇü ÀÖ°Ô ½ÀµæÇÔÀ¸·Î½á ÃÖ´ëÀÇ È¿°ú¸¦ °ÅµÑ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾î·Á¿î ÁÖÁ¦·Î ÀνĵǴ µ¿½Ã¼ºÀ» ´Ù·ç´Â ¸¸Å­ °ï¶õÇÑ ¹®Á¦µé°ú ±× ÇØ°á ¹æ¹ýµµ ÇÔ²² Á¦½ÃÇÑ´Ù.

C++11°ú C++14Àº µ¿½ÃÀûÀÌ°í º´·ÄÀûÀΠÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ ±âº» ºôµù ºí·ÏÀ» °®Ãè´Ù. C++17¿¡¼­´Â Ç¥ÁØ ÅÛÇø´ ¶óÀ̺귯¸®(STL)ÀÇ º´·Ä ¾Ë°í¸®ÁòÀ» Áö¿øÇÑ´Ù. ´Ù½Ã ¸»ÇØ, STL ±â¹Ý ¾Ë°í¸®ÁòÀº ´ëºÎºÐ ¼øÂ÷ÀûÀ¸·Î³ª º´·ÄÀûÀ¸·Î ¶Ç´Â º¤ÅÍÈ­ ¹æ½ÄÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖ´Ù. C++ÀÇ µ¿½Ã¼º À̾߱â´Â ÇöÀç ÁøÇàÇüÀÌ´Ù. C++20¿¡´Â È®Àå Ç»Ã³¿Í ÄÚ·çƾ, Æ®·£Àè¼Ç µîÀÌ ´ã±æ °ÍÀ¸·Î ¿¹»óµÈ´Ù.

ÀúÀÚ¼Ò°³

ÆÀ ¸®´õ¿Í °­»ç·Î 20³â ³Ñ°Ô ±Ù¹«ÇÑ º£Å׶û ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØÆ®´Ù. ½Ã°£ÀÌ ³¯ ¶§¸é C++, ÆÄÀ̽ã, ÇϽºÄÌ °°Àº ÁÖÁ¦ÀÇ ±â»ç¸¦ Áñ°Ü Àаí, ÄÜÆÛ·±½º¿¡µµ ÀÚÁÖ Âü°¡ÇÑ´Ù. 2016³âºÎÅʹ ȸ»ç¸¦ ³ª¿Í ¸ð´ø C++¿Í ÆÄÀ̽ãÀ» ÁÖÁ¦·Î Çϴ ¼¼¹Ì³ª¸¦ Á¶Á÷ÇÏ¿© Áö±Ý±îÁö À̲ø°í ÀÖ´Ù.

¸ñÂ÷

PART I ¼­·Ð _ 1
CHAPTER 1 ¸ð´ø C++ÀÇ µ¿½Ã¼º 3
C++11°ú C++14: Åä´ë 4
¸Þ¸ð¸® ¸ðµ¨ 4
¸ÖƼ½º·¹µù 5
»ç·Ê ¿¬±¸ 7
º¤ÅÍÀÇ ÇÕ °è»êÇϱâ 7
½Ì±ÛÅÏÀÇ ½º·¹µå ¾ÈÀüÇÑ ÃʱâÈ­ 7
CppMemÀÇ ¿¬¼Ó ÃÖÀûÈ­ 7
C++17: Ç¥ÁØ ÅÛÇø´ ¶óÀ̺귯¸®ÀÇ º´·Ä ¾Ë°í¸®Áò 8
½ÇÇà Á¤Ã¥ 8
»õ ¾Ë°í¸®Áòµé 8
C++20: µ¿½Ã¼º Ç»Ã³ 9
¿øÀÚ°è ½º¸¶Æ® Æ÷ÀÎÅÍ 9
È®Àå Ç»Ã³ 10
·¡Ä¡¿Í À庮 10
ÄÚ·çƾ 10
Æ®·£Àè¼Ç ¸Þ¸ð¸® 10
ŽºÅ© ºí·Ï 11
µµÀü 11
º£½ºÆ® ÇÁ·¢Æ¼½º 11
time ¶óÀ̺귯¸® 12
¿ë¾î 12

PART II º»·Ð _ 13
CHAPTER 2 ¸Þ¸ð¸® ¸ðµ¨ 15
°è¾à 16
±â¹Ý 17
µµÀü 18
¿øÀÚ°è 19
²Ä²ÄÇÑ ¸Þ¸ð¸® ¸ðµ¨ vs Çã¼úÇÑ ¸Þ¸ð¸® ¸ðµ¨ 19
¿øÀÚ°è Ç÷¡±× 22
Ŭ·¡½º ÅÛÇø´ std::atomic 27
»ç¿ëÀÚ Á¤ÀÇ ¿øÀÚ°è 34
¿øÀÚ°è ¿¬»êµé 35
¿øÀÚ°è ÀÚÀ¯ ÇÔ¼öµé 36
µ¿±âÈ­ ¹× ¼ø¼­»ó Á¦¾à Á¶°Ç 39
C++ÀÇ ¿©¼¸ °¡Áö ¸Þ¸ð¸® ¸ðµ¨ 39
½ÃÄö½º ÀÏ°ü¼º 41
acquire-release ½Ã¸Çƽ 44
std::memory_order_consume 53
Æí¾ÈÇÑ ½Ã¸Çƽ 57
´ãÀå 60
¸Þ¸ð¸® À庮À¸·Î¼­ÀÇ ´ãÀå 60
¼¼ °¡Áö ´ãÀå 60
acquire ´ãÀå°ú release ´ãÀå 63
¿øÀÚ°è º¯¼öÀÇ µ¿±âÈ­¿Í ´ãÀåÀÇ µ¿±âÈ­ 65

CHAPTER 3 ¸ÖƼ½º·¹µù 71
½º·¹µå 72
»ý¼º 72
¶óÀÌÇÁ»çÀÌŬ 73
Àμö 76
¸Þ¼­µå 80
°øÀ¯ µ¥ÀÌÅÍ 83
¹ÂÅؽº 85
Àá±è 90
½º·¹µå ¾ÈÀüÇÑ ÃʱâÈ­ 100
½º·¹µå ·ÎÄ൥ÀÌÅÍ 106
Á¶°Ç º¯¼ö 108
wait ÀÛ¾÷ È帧 110
»ç¶óÁø ±ú¿ì±â¿Í °¡Â¥ ±ú¿ì±â 112
ŽºÅ© 112
½º·¹µå¿Í Å½ºÅ© 113
std::async 115
std::packaged_task 120
std::promise¿Í std::future 124

CHAPTER 4 »ç·Ê ¿¬±¸ 135
º¤ÅÍÀÇ ÇÕ °è»êÇϱâ 136
º¤ÅÍÀÇ ½Ì±Û½º·¹µù µ¡¼À 137
°øÀ¯ º¯¼öÀÇ ¸ÖƼ½º·¹µù ÇÕ 143
½º·¹µå ·ÎÄàÇÕ 148
º¤ÅÍÀÇ ÇÕ: °á·Ð 157
½Ì±ÛÅÏÀÇ ½º·¹µå ¾ÈÀüÇÑ ÃʱâÈ­ 158
Àá±è ÆÐÅÏÀÇ ÀÌÁß È®ÀΠ159
¼º´É ÃøÁ¤ 160
½º·¹µå ¾ÈÀüÇÑ ¸¶À̾ ½Ì±ÛÅÏ 163
std::once_flag¿Í °áÇյȠstd::call_once 166
¿øÀÚ°è 167
½º·¹µå ¾ÈÀüÇÑ ½Ì±ÛÅÏ ±¸ÇöÀÇ ¼º´É ¼öÄ¡µé 170
CppMem ¿¬¼Ó ÃÖÀûÈ­ 171
CppMem °³¿ä 172
CppMem: ºñ¿øÀÚ°è º¯¼ö 176
CppMem: Àá±è 180
CppMem: ½ÃÄö½º ÀÏ°ü¼º ¿øÀÚ°è 182
CppMem: acquire-release ½Ã¸Çƽ ¿øÀÚ°è 187
CppMem: ºñ¿øÀÚ°è°¡ Àû¿ëµÈ ¿øÀÚ°è 190
CppMem: Æí¾ÈÇÑ ½Ã¸Çƽ ¿øÀÚ°è 192
°á·Ð 194

CHAPTER 5 Ç¥ÁØ ÅÛÇø´ ¶óÀ̺귯¸®ÀÇ º´·Ä ¾Ë°í¸®Áò 195
½ÇÇà Á¤Ã¥ 196
¾Ë°í¸®Áò 198
»õ ¾Ë°í¸®Áòµé 199
ÇÔ¼öÇü À¯»ê 203

CHAPTER 6 ¹Ì·¡: C++20 205
¿øÀÚ°è ½º¸¶Æ® Æ÷ÀÎÅÍ 206
½º·¹µå ¾ÈÀüÇÑ ´ÜÀÏ ¿¬°á ¸®½ºÆ® 207
È®Àå Ç»Ã³ 208
std::future 208
std::async, std::packaged_task, std::promise 210
»õ Ç»Ã³ »ý¼ºÇϱâ 210
·¡Ä¡¿Í À庮 213
std::latch 214
std::barrier 214
std::flex_barrier 216
ÄÚ·çƾ 217
Á¦³Ê·¹ÀÌÅÍ ÇÔ¼ö 218
¼¼ºÎ ³»¿ë 221
Æ®·£Àè¼Ç ¸Þ¸ð¸® 223
ACI(D) 224
µ¿±âÈ­ ºí·Ï°ú ¿øÀÚ°è ºí·Ï 224
transaction_safe ÄÚµå¿Í transaction_unsafe ÄÚµå 228
ŽºÅ© ºí·Ï 229
fork¿Í join 229
define_task_block°ú define_task_block_restore_thread 231
ÀÎÅÍÆäÀ̽º 231
½ºÄÉÁÙ·¯ 232

PART III ½ÉÈ­ _ 233
CHAPTER 7 µµÀü 235
ABA 236
ºñÀ¯ 236
ºñÀÓ°è ABA 237
Àá±è ¾ø´Â µ¥ÀÌÅÍ ±¸Á¶ 237
ABA ¹®Á¦ 238
ÇØ°áÃ¥ 239
ºí·ÎÅ· ¹®Á¦ 241
ÇÁ·Î±×·¥ ºÒº¯½Ä ±ú±â 243
µ¥ÀÌÅÍ °æÀï 244
°¡Â¥ °øÀ¯ 246
º¯¼öÀÇ ¶óÀÌÇÁ»çÀÌŬ ¹®Á¦ 246
¿òÁ÷À̴ ½º·¹µå 247
±³Âø»óÅ 249
°æÀï »óÅ 250

CHAPTER 8 º£½ºÆ® ÇÁ·¢Æ¼½º 251
°³°ý 252
Äڵ堸®ºä 252
º¯Çü °¡´ÉÇÑ µ¥ÀÌÅÍÀÇ µ¥ÀÌÅÍ °øÀ¯¸¦ ÃÖ¼ÒÈ­Ç϶ó 252
´ë±â¸¦ ÃÖ¼ÒÈ­Ç϶ó 253
º¯Çü ºÒ°¡´ÉÇÑ µ¥ÀÌÅ͸¦ ¸ÕÀú »ç¿ëÇ϶ó 253
¿Ã¹Ù¸¥ Ãß»óÈ­¸¦ Ã£¾Æ¶ó 253
Á¤Àû Äڵ堺м® µµ±¸¸¦ »ç¿ëÇ϶ó 254
µ¿Àû °­È­ µµ±¸¸¦ »ç¿ëÇ϶ó 254
¸Þ¸ð¸® ¸ðµ¨ 255
µ¿±âÈ­¿¡ volatileÀ» »ç¿ëÇÏÁö ¸¶¶ó 255
Àá±è ¾ø´Â ÇÁ·Î±×·¥À» ¸¸µéÁö ¸¶¶ó 256
Àá±è ¾ø´Â ÇÁ·Î±×·¥ÀÌ ºÒ°¡ÇÇÇÒ ¶§´Â Àß Á¤¸³µÈ ÆÐÅÏÀ» »ç¿ëÇ϶ó 256
ÀڽŸ¸ÀÇ Ãß»óÈ­¸¦ ¸¸µéÁö ¸»°í ¾ð¾î°¡ Á¦°øÇϴ º¸ÀåÀ» »ç¿ëÇ϶ó 256
¸ÖƼ½º·¹µù 257
½º·¹µå 257
µ¥ÀÌÅÍ °øÀ¯ 259
Á¶°Ç º¯¼ö 262
ÇÁ·Î¹Ì½º¿Í Ç»Ã³ 265

CHAPTER 9 time ¶óÀ̺귯¸® 267
½ÃÁ¡°ú ±â°£, Å¬·ÏÀÇ »óÈ£ÀÛ¿ë 268
½ÃÁ¡ 269
½ÃÁ¡¿¡¼­ Ä¶¸°´õ ½Ã°£±îÁö 269
À¯È¿ÇÑ ½Ã°£ ¹üÀ§¸¦ ³Ñ¾î 271
±â°£ 272
°è»ê 274
Ŭ·Ï 276
Á¤È®µµ¿Í °íÁ¤¼º 277
¿¡Æ÷Å© 279
ÀáÀÚ±â¿Í ±â´Ù¸®±â 281
°ü½À 281
´Ù¾çÇÑ ±â´Ù¸®±â Àü·« 282

CHAPTER 10 ¿ë¾î 287

ã¾Æº¸±â 295