|
¸ÖƼ½º·¹µå ±â¹Ý ÀÚ¹Ù½ºÅ©¸³Æ® Multithreaded JavaScript
Ã¥¼Ò°³ÀÌ Ã¥ÀÌ ¼ÓÇÑ ºÐ¾ßÀÚ¹Ù½ºÅ©¸³Æ®·Î ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇØ¾ß ÇÏ´Â °³¹ßÀÚ¿¡°Ô ºê¶ó¿ìÀúÀÇ À¥ ¿öÄ¿ API, Node.jsÀÇ ¿öÄ¿ ½º·¹µå ¸ðµâ¿¡ ´ëÇÑ Àå´ÜÁ¡À» ¼Ò°³ÇÕ´Ï´Ù. ÀÌ Ã¥¿¡¼´Â ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Çö¿¡ È°¿ëÇÒ ¼ö ÀÖ´Â µÎ °¡Áö Á¢±Ù¹ýÀ» Á¦½ÃÇÕ´Ï´Ù. ù ¹ø°´Â ¸Þ½ÃÁö ÆнÌ, µÎ ¹ø°´Â °øÀ¯ ¸Þ¸ð¸®ÀÔ´Ï´Ù. À̸¦ ±¸ÇöÇϱâ À§ÇÑ API»Ó¸¸ ¾Æ´Ï¶ó, ¸Þ½ÃÁö ÆÐ½Ì ¹× °øÀ¯ ¸Þ¸ð¸®¸¦ È°¿ëÇϱ⿡ ÀûÇÕÇÑ »óȲ, ±×¸®°í µÎ Á¢±Ù¹ýÀ» ¸ðµÎ È°¿ëÇÒ ¼ö ÀÖ´Â »óȲÀ» ¼³¸íÇÕ´Ï´Ù. ¶ÇÇÑ, °ü·ÃµÈ °í¼öÁØÀÇ ÇÁ·Î±×·¡¹Ö ÆÐÅϵµ ¼Ò°³ÇÕ´Ï´Ù. ¸ñÂ÷CHAPTER 1 ½ÃÀÛÇϸç 1 ½º·¹µå¶õ? 2 µ¿½Ã¼º vs º´·Ä¼º 3 ½Ì±Û½º·¹µå ±â¹Ý ÀÚ¹Ù½ºÅ©¸³Æ® 4 ¼û°ÜÁø ½º·¹µå 5 C¾ð¾îÀÇ ½º·¹µå : HappycoinÀ¸·Î ºÎÀÚ µÇ¼¼¿ä __5.1 ¸ÞÀÎ ½º·¹µå 1°³·Î ±¸ÇöÇϱâ __5.2 ¿öÄ¿ ½º·¹µå 4°³·Î ±¸ÇöÇϱâ CHAPTER 2 ºê¶ó¿ìÀú 1 Àü¿ë ¿öÄ¿ __1.1 Àü¿ë ¿öÄ¿¸¦ »ç¿ëÇÑ Hello World ÄÚµå __1.2 Àü¿ë ¿öÄ¿ Áß±Þ ¹öÀü 2 °øÀ¯ ¿öÄ¿ __2.1 °øÀ¯ ¿öÄ¿¸¦ »ç¿ëÇÑ Hello World ÄÚµå __2.2 °øÀ¯ ¿öÄ¿ Áß±Þ ¹öÀü 3 ¼ºñ½º ¿öÄ¿ __3.1 ¼ºñ½º ¿öÄ¿¸¦ »ç¿ëÇÑ Hello World ÄÚµå __3.2 ¼ºñ½º ¿öÄ¿ Áß±Þ ¹öÀü 4 ¸Þ½ÃÁö ÆÐ½Ì °³¿ä __4.1 RPC ÆÐÅÏ __4.2 ¸í·É¾î ºÐ¹è ÆÐÅÏ __4.3 Á¾ÇÕ ¹öÀü CHAPTER 3 Node.js 1 ½º·¹µå°¡ ¾ø¾úÀ» ½ÃÀý 2 worker_threads ¸ðµâ __2.1 workerData __2.2 MessagePort 3 Happycoin ´Ù½Ã º¸±â __3.1 ¸ÞÀÎ ½º·¹µå 1°³·Î ±¸ÇöÇϱâ __3.2 ¿öÄ¿ ½º·¹µå 4°³·Î ±¸ÇöÇϱâ 4 Piscina¸¦ ÅëÇÑ ¿öÄ¿ Ç® 5 HappycoinÀ¸·Î °¡µæ Âù Ç® CHAPTER 4 °øÀ¯ ¸Þ¸ð¸® 1 °øÀ¯ ¸Þ¸ð¸® ÀÔ¹® __1.1 ºê¶ó¿ìÀú¿¡¼ °øÀ¯ ¸Þ¸ð¸® »ç¿ëÇϱâ __1.2 Node.jsÀÇ °øÀ¯ ¸Þ¸ð¸® 2 SharedArrayBuffer¿Í TypedArrays 3 µ¥ÀÌÅÍ °¡°øÀ» À§ÇÑ Atomic ¸Þ¼µå 4 ¿øÀÚ¼º¿¡ ´ëÇÑ ³íÀÇ 5 µ¥ÀÌÅÍ Á÷·ÄÈ __5.1 Boolean ŸÀÔ __5.2 ¹®ÀÚ¿ ŸÀÔ __5.3 °´Ã¼ ŸÀÔ CHAPTER 5 °øÀ¯ ¸Þ¸ð¸® Áß±Þ 1 ÄÚµð³×À̼ÇÀ» À§ÇÑ Atomic ¸Þ¼µå __1.1 Atomics.wait() __1.2 Atomics.notify() __1.3 Atomics.waitAsync() 2 ½º·¹µå°¡ ±ú¾î³ª´Â ŸÀְ̹ú ¿¹Ãø °¡´É¼º __2.1 ºñ°áÁ¤Àû ¹æ½ÄÀÇ ¿¹½Ã __2.2 ½º·¹µå Áغñ ¿©ºÎ °¨ÁöÇϱâ 3 ¿¹½Ã ¾ÖÇø®ÄÉÀ̼Ç: ÄÜ¿þÀÌÀÇ »ý¸í °ÔÀÓ __3.1 ÄÜ¿þÀÌÀÇ »ý¸í °ÔÀÓ: ½Ì±Û ½º·¹µå ¹öÀü __3.2 ÄÜ¿þÀÌÀÇ »ý¸í °ÔÀÓ: ¸ÖƼ½º·¹µå ¹öÀü 4 Atomics¿Í Events °´Ã¼ CHAPTER 6 ¸ÖƼ½º·¹µå ÆÐÅÏ 1 ½º·¹µå Ç® __1.1 Ç® Å©±â __1.2 ÀÛ¾÷ ¹èÁ¤ Àü·« __1.3 ¿¹½Ã Àû¿ëÇϱâ 2 ¹ÂÅؽº: ·Ï ±âÃÊ 3 ¸µ ¹öÆÛ¸¦ ÅëÇÑ µ¥ÀÌÅÍ ½ºÆ®¸®¹Ö 4 ¾×ÅÍ ¸ðµ¨ __4.1 ÆÐÅÏ ´µ¾Ó½º __4.2 ÀÚ¹Ù½ºÅ©¸³Æ®¿ÍÀÇ °ü°è __4.3 ¿¹½Ã ±¸ÇöÇϱâ CHAPTER 7 À¥¾î¼Àºí¸® 1 ¿©·¯ºÐÀÇ Ã¹ ¹ø° À¥¾î¼Àºí¸® 2 À¥¾î¼Àºí¸®ÀÇ µ¥ÀÌÅÍ ¿øÀÚ¼º ÇÔ¼ö 3 EmscriptenÀ» ÅëÇØ C ÄÚµå À¥¾î¼Àºí¸®·Î ÄÄÆÄÀÏÇϱâ 4 À¥¾î¼Àºí¸® ÄÄÆÄÀÏ·¯: ±âŸ 5 AssemblyScript 6 Happycoin: AssemblyScript·Î ±¸ÇöÇϱâ CHAPTER 8 ºÐ¼® 1 ¸ÖƼ½º·¹µùÀ» Àû¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÏ´Â °æ¿ì __1.1 ¸Þ¸ð¸® Å©±â°¡ ÀÛÀ» ¶§ __1.2 ÄÚ¾î °³¼ö°¡ ÀûÀ» ¶§ __1.3 ÄÁÅ×ÀÌ³Ê vs ½º·¹µå 2 ¸ÖƼ½º·¹µùÀ» Àû¿ëÇØ¾ß ÇÏ´Â °æ¿ì 3 ÁÖÀÇ»çÇ× ¿ä¾à ºÎ·Ï: ±¸Á¶ÈµÈ º¹Á¦ ¾Ë°í¸®Áò ÃâÆÇ»ç ¼ÆòÀÌ Ã¥ÀÇ ¸ñÇ¥´Â ÀÚ¹Ù½ºÅ©¸³Æ® ¸ÖƼ½º·¹µùÀ» ±¸ÇöÇϱâ À§ÇÑ ½Ç¹« Áö½ÄÀ» Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ±×°£ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·Î±×·¥Àº ½Ì±Û Äھ ±¹ÇÑÇÏ¿© °³¹ßµÇ¾ú°í, ½ÇÁ¦·Î Æ®À§Åͳª °³¹ßÀÚ Æ÷·³¿¡¼µµ ÀÚ¹Ù½ºÅ©¸³Æ®´Â ½Ì±Û ½º·¹µå ÇÁ·Î±×·¥À¸·Î¸¸ °³¹ßÇÒ ¼ö ÀÖ´Ù°í ¸»ÇÏ´Â ±ÛÀÌ ¸¹½À´Ï´Ù. ÀÌ Ã¥ÀÇ Á¦¸ñÀÌ ¸ÖƼ½º·¹µå ±â¹Ý ÀÚ¹Ù½ºÅ©¸³Æ®(Multithreaded JavaScript)ÀÎ °Íó·³, ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·Î±×·¥Àº ¹«Á¶°Ç ½Ì±Û ½º·¹µå·Î °³¹ßÇØ¾ß ÇÑ´Ù´Â ¿ÀÇظ¦ ŸÆÄÇÏ°íÀÚ ÇÕ´Ï´Ù. ±×¸®°í ¼¼ºÎ ¸ñÇ¥´Â ¿©·¯ºÐ²² ÀÚ¹Ù½ºÅ©¸³Æ® ¸ÖƼ½º·¹µùÀ» ±¸ÇöÇÒ ¶§ °í·ÁÇØ¾ß ÇÒ ¿ä¼Ò¸¦ ¼³¸íÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ Ã¥À» ´Ù ÀÐÀ» ¶§Âë¿¡´Â ºê¶ó¿ìÀú À¥ ¿öÄ¿ APIÀÇ »ç¿ë¹ý, °/¾àÁ¡, ¾ðÁ¦ ¾î¶² API¸¦ »ç¿ëÇØ¾ß ÇÒÁö¸¦ ÀÌÇØÇÏ°Ô µÉ °Ì´Ï´Ù. ¶ÇÇÑ Node.jsÀÇ ¿öÄ¿ ½º·¹µå ¸ðµâ API´Â ºê¶ó¿ìÀú À¥ ¿öÄ¿¿Í ¾î¶°ÇÑ Â÷ÀÌ°¡ ÀÖ´ÂÁö ¾Ë°Ô µÉ °Ì´Ï´Ù. - ¸ÖƼ½º·¹µùÀ» ÅëÇØ ¼º´ÉÀ» Çâ»óÇÏ´Â ¹ý - Àü¿ë ¿öÄ¿, °øÀ¯ ¿öÄ¿, ¼ºñ½º ¿öÄ¿ÀÇ Â÷ÀÌÁ¡ - ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ½º·¹µå¸¦ »ç¿ëÇØ¾ß ÇÒ ¶§, »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÒ ¶§ - Atomics °´Ã¼¸¦ È°¿ëÇÑ ½º·¹µå Åë½Å Àû¿ë - ¾ÖÇø®ÄÉÀÌ¼Ç ¼º´É Çâ»óÀ» À§ÇÑ ¿¹½Ã ÄÚµå ±¸Çö - ¸ÖƼ½º·¹µù ¼º´É¿¡ ´ëÇÑ º¥Ä¡¸¶Å©
(°³)
1. ¹è¼Û
¹è¼ÛÀº ´çÀÏ ¿ÀÈÄ 4½ÃÀÌÀü(Åä¿äÀÏÀº ¿ÀÈÄ12½Ã)¿¡ ÁÖ¹®¹× °áÀ縦 ÇÏ½Ã¸é ´çÀϹè¼ÛµË´Ï´Ù. ¹è¼ÛÀº ÁÖ¹® ÈÄ °áÀç¿Ï·áÀÏÀ» ±âÁØÀ¸·Î 1~2ÀÏ ¾È¿¡ ¹è¼Û¿Ï·á¸¦ ¿øÄ¢À¸·Î ÇÏ°í ÀÖ½À´Ï´Ù. ´Ù¸¸ ºÎµæÀÌÇÑ °æ¿ì(ÇØ´ç»óÇ°ÀÇ Ç°Àý ¹× ÀýÆÇ) °í°´´Ô²² Àüȸ¦ µå·Á¼ 󸮸¦ ÇÕ´Ï´Ù. 2. ¹è¼Û·á ¹è¼Û·á´Â 25,000¿ø ÀÌ»óÀÌ °æ¿ì À̱×ÀëÇ÷¯½º¿¡¼ ºÎ´ãÇÏ°í, ¹Ì¸¸ÀÏ °æ¿ì °í°´ÀÌ 2,500¿øÀ» ºÎ´ãÇÕ´Ï´Ù. ´Ù¸¸ ±¸¸Å±Ý¾×ÀÌ 25,000¿ø ÀÌ»óÀε¥ Àû¸³±Ý µîÀ» »ç¿ëÇÏ¿© ½ÇÁ¦ °áÀç±Ý¾×ÀÌ 25,000¿ø ¹Ì¸¸ÀÌ µÇ´õ¶óµµ À̱×ÀëÇ÷¯½º¿¡¼ ¹è¼Û·á¸¦ ºÎ´ãÇÏ°í, Á¦ÁÖ¸¦ Á¦¿ÜÇÑ µµ¼Áö¿ªÀÇ °æ¿ì´Â 5,000¿øÀÌ Ãß°¡µË´Ï´Ù. Çؿܹè¼ÛÀº Àü¾× °í°´ºÎ´ãÀÌ µË´Ï´Ù. 5. ¹ÝÇ°/±³È¯
¹ÞÀ¸½Å ³¯ ºÎÅÍ ÀÏÁÖÀÏ À̳» ¹ÝÇ°/±³È¯ÀÌ °¡´ÉÇϽʴϴÙ. ½Ã°£ÀÌ Áö³ª¸é 󸮰¡ ºÒ°¡ÇÔÀ» ¾Ë·Á µå¸³´Ï´Ù. ´Ù¸¸ ÁÖ¹®ÇϽŠ»óÇ°°ú ´Ù¸¥ »óÇ°ÀÌ ¹è¼ÛµÇ°Å³ª Æĺ», ³«ÀåÀÌ ÀÖ´Â µµ¼ÀÇ °æ¿ì ÀÌ¿ë¾à°ü¿¡ ÁØÇÏ¿© À̱×ÀëÇ÷¯½ºÀÇ ºñ¿ëÀ¸·Î ±³È¯, ¹ÝÇ° ¹× ȯºÒ µîÀ» Çص帳´Ï´Ù. 4. ȯºÒ ¹ÞÀ¸½Å ³¯ºÎÅÍ 2ÀÏ À̳»·Î Àüȳª 1:1 °Ô½Ã±Û·Î Àû¾îÁÖ¼Å¾ß °¡´ÉÇϽʴϴÙ. 5. ÁÖÀÇ °í°´´Ô º¯½ÉÀ¸·Î ÀÎÇÑ ±³È¯/¹ÝÇ°/ȯºÒ °í°´´Ô²²¼ Åùèºñ(¿Õº¹Åùèºñ)¸¦ ºÎ´ãÀÌ µÇ´Ï ÀÌÁ¡ À¯ÀÇÇØ ÁֽʽÿÀ. ¶ÇÇÑ °ÀÇÅ×ÀÙ/¾ãÀº¹®Á¦Áý/ºñ´ÒÆ÷ÀåµÈÁ¦Ç°µîÀº Çѹø ±¸¸ÅÇÏ½Ã¸é ±³È¯/¹ÝÇ°/ȯºÒÀÌ ÀüÇô ¾ÈµË´Ï´Ù. ½ÅÁßÈ÷ »ý°¢Çϼż ±¸¸Å ºÎŹµå¸³´Ï´Ù. ´Ù¸¸ ºÒ·®Å×ÀÙÀÇ °æ¿ì ±× ºÒ·®ÀÌ µÈ °³º°Å×ÀÙÀ» À̱×ÀëÇ÷¯½ºÀÇ ºñ¿ëÀ¸·Î A/S¸¦ Çص帳´Ï´Ù. 6. ÁÖ¹®Ãë¼Ò, ±³È¯, ¹ÝÇ° ¹× ȯºÒÀº ´çÀÏ 3½Ã ÀÌÀü¿¡ ÇØÁÖ¼Å¾ß °¡´ÉÇÕ´Ï´Ù. ±× ÀÌÈÄ´Â ¹è¼Û µî¿¡ µû¸¥ Á¦ºñ¿ëÀ» ºÎ´ãÇÏ¼Å¾ß ÇÕ´Ï´Ù.
|
|
||||||||
|
||||||||
|
||||||||
* »óÇ°»çÀÌÁî Ä¡¼ö´Â Àç´Â ¹æ¹ý°ú À§Ä¡¿¡ µû¶ó 1~3cm ¿ÀÂ÷°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.