thread safe
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Thread safety

Thread safety´Â ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹Ö¿¡¼­ »ç¿ëµÇ´Â ¿ë¾î·Î, ¸ÖƼ ½º·¹µå ȯ°æÇÏ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÄÚµå Á¶°¢ÀÌ - Áï ÇÔ¼ö - ¸¸µé¾î Á³´Ù¸é, ±× ÄÚµå Á¶°¢Àº ½º·¹µå ¼¼ÀÌÇÁÇÏ´Ù°í ¸»ÇÑ´Ù.

½º·¹µå ¼¼ÀÌÇÁ´Â ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­ ¸Å¿ì Áß¿äÇÑ Å°¿öµå´Ù. 1990³â ÀÌÀü±îÁö´Â ÇÁ·Î±×·¡¸ÓµéÀÌ ½º·¹µå ¼¼ÀÌÇÁ¿¡ ´ëÇØ¼­ ¹Î°¨ÇÏ°Ô ¹ÝÀÀÇÒ Çʿ䰡 ¾ø¾ú´Ù. ¸ÖƼ ½º·¹µå ȯ°æÀÌ ±×´ÙÁö ÀϹÝÀûÀÌÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ±×·¯³ª À©µµ¿ì ½Ã½ºÅÛÀÌ ¸ÖƼ ½º·¹µå±â´ÉÀ» Æ÷ÇÔÇϰí, BSD¿Í ¸®´ª½º¿î¿µÃ¼Á¦°¡ ³Î¸® È®»êµÇ¸é¼­, ÀϹÝÀûÀ¸·Î °í·ÁÇØ¾ßÇÒ À̽´°¡ µÇ¾ú´Ù. ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ½º·¹µå°¡ µ¿½Ã¿¡ µ¿ÀÏÇÑ ¸Þ¸ð¸® °ø°£¿¡¼­ ½ÇÇàµÈ´Ù. ±×·¯¹Ç·Î ¸¸¾à µ¥ÀÌÅ͸¦ Àü¿ª ¸Þ¸ð¸® °ø°£ µÎ´Â ÇÔ¼ö¸¦ ¿©·¯ °³ÀÇ ½º·¹µå°¡ µ¿½Ã¿¡ »ç¿ëÇÏ°Ô µÇ¸é, À߸øµÈ ¿¬»êÀÌ ¼öÇàµÉ ¼ö ÀÖ´Ù.

Äڵ尡 ½º·¹µå ¼¼ÀÌÇÁÇÑÁö °áÁ¤ÇÏ´Â °ÍÀº ½¬¿îÀÏÀÌ ¾Æ´Ï´Ù. ÇÏÁö¸¸ ÀϹÝÀûÀÎ ÃøÁ¤¹æ¹ýÀº ÀÖ´Ù.
  • Àü¿ª º¯¼ö³ª heapÀ» »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù.
  • Àü¿ª ÀÚ¿øÀ» À§ÇÑ ÇÒ´ç/ÀçÇÒ´ç/ÇØÀç°¡ ¾ø¾î¾ß ÇÑ´Ù. ÆÄÀÏ, ÆÄÀÌÇÁ µîµî
  • Àü¿ª º¯¼öÀÇ ÁÖ¼Ò¸¦ ¹ÝÈ¯ÇØ¼­´Â ¾ÈµÈ´Ù.
  • ÇÚµé ȤÀº Æ÷ÀÎÅÍ¿¡ ´ëÇÑ °£Á¢ ¿¢¼¼½º°¡ ¾ø¾î¾ß ÇÑ´Ù.

½º·¹µå ¼¼ÀÌÇÁÀÇ ´Þ¼º

½º·¹µå ¼¼ÀÌÇÁÇÑ Äڵ带 ¸¸µé±â À§ÇÑ ÀϹÝÀûÀÎ ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
  1. Re-entrancy : ÀçÁøÀÔ¼º À̶ó°í ÇÑ´Ù.
    ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¥¿¡¼­´Â ¾î¶² ÇÔ¼ö°¡ ½º·¹µå A¿¡¼­ ½ÇÇàÁß¿¡ ½º·¹µå B°¡ ÀÌ ÇÔ¼ö¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ³ªÁß¿¡ ½º·¹µå A°¡ ´Ù½Ã ½ÇÇàÇßÀ» ¶§, ÀÌÀüÀÇ ÄÚµåÀÇ »óŰ¡ ±×´ë·Î À¯ÁöµÇ¸é, À̸¦ ÀçÁøÀÔ¼ºÀÌ º¸ÀåµÈ ÇÔ¼ö¶ó°í ÇÑ´Ù. À̸¦ À§Çؼ­´Â ÇÔ¼ö°¡ »ç¿ëÇÏ´Â º¯¼ö°¡ ½ºÅÂÆ½À̳ª Àü¿ªº¯¼ö°¡ ¾Æ´Ñ °¢°¢ÀÇ Áö¿ª º¯¼ö ÇüÅ·ΠÀúÀåµÇ¾î¾ß ÇÑ´Ù.
  2. »óÈ£¹èÁ¦ ȤÀº ÇÁ·Î¼¼½º µ¿±âÈ­
    °øÀ¯ ÀÚ¿øÀ» ¿©·¯ ½º·¹µå°¡ ¿¢¼¼½º ÇÒ¶§, µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ¾ø°Ô ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ÀӰ迵¿ªÀ» µÖ¼­ Çѹø¿¡ ÇϳªÀÇ ½º·¹µå¸¸ ÁøÀÔÇÒ ¼ö ÀÖµµ·Ï Á¦¾îÇÑ´Ù. ÀÌ ¹æ½ÄÀÇ °¡Àå Å« ¹®Á¦Á¡Àº Á¦¾î°¡ º¹ÀâÇÏ´Ù´Â Á¡ÀÌ´Ù. ÀÌ ¹æ½ÄÀº race condition, µ¥µå¶ô, livelocks, starvation°ú °°Àº µð¹ö±ëÀÌ ¾î·Á¿ï ¼ö ÀÖ´Â ¹Ì¹¦ÇÑ ¹®Á¦¸¦ ºÒ·¯ ÀÏÀ¸Å²´Ù.
  3. Atomic operations : ¿¬»êÀÇ ¿øÀÚÈ­
    °øÀ¯ ÀÚ¿ø¿¡ ´ëÇÑ ¿¢¼¼½º¸¦ ´Ù¸¥ ½º·¹µå°¡ ÀÎÅÍ·´Æ® ÇÏÁö ¸øÇϵµ·Ï ¿¬»êÀ» ¿øÀÚÈ­ ÇÑ´Ù.

ÀçÁøÀÔ°ú ½º·¹µå ¼¼ÀÌÇÁ

ÇÔ¼ö°¡ ÀçÁøÀÔ °¡´ÉÇÏ´Ù°í ÇØµµ, ¿©ÀüÈ÷ ½º·¹µå ¼¼ÀÌÇÁ ÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù. ¼³Á¤ Á¤º¸¸¦ Àбâ À§Çؼ­ ¼³Á¤ÆÄÀÏÀ» ¿©´Â ÇÔ¼ö¸¦ ¿¹·Î µé¾îº¸ÀÚ.

¿¹Á¦

¾Æ·¡ÀÇ C ÄÚµå´Â ½º·¹µå ¼¼ÀÌÇÁ ÇÏ´Ù. ÇÏÁö¸¸ ÀçÁøÀÔ¼ºÀ» º¸ÀåÇÏÁö ¾Ê´Â´Ù.
int function() 
{ 
    mutex_lock(); 
    ... 
    function body 
    ... 
    mutex_unlock(); 
} 
 
À§ Äڵ忡¼­, ¿©·¯ °³ÀÇ ´Ù¸¥ ¾²·¹µå°¡ ÇÔ¼ö¸¦ È£ÃâÇÏ´õ¶óµµ ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ¸¸¾à ÀÌ function ÇÔ¼ö°¡ ÀçÁøÀÔ °¡´ÉÇÑ ÀÎÅÍ·´Æ® Çڵ鷯¿¡¼­ »ç¿ëµÇ°í, function ÇÔ¼ö³»ºÎ¸¦ ½ÇÇàÁßÀÏ ¶§ µÎ¹øÂ° ÀÎÅÍ·´Æ®°¡ µµÂøÇÑ´Ù¸é, µÎ¹øÂ° ·çƾÀº hang »óÅ¿¡ ³õÀÏ °ÍÀÌ´Ù. ÀÎÅÍ·´Æ® ¼­ºñ½º´Â ´Ù¸¥ ÀÎÅÍ·´Æ®¸¦ ºñȰ¼ºÈ­ ½Ãų ¼ö Àֱ⠶§¹®ÀÌ´Ù.

¾Æ·¡ÀÇ C ÄÚµå´Â ÀçÁøÀÔ¼ºÀ» º¸ÀåÇÑ´Ù. ±×·¯³ª ½º·¹µå ¼¼ÀÌÇÁÇÏÁö´Â ¾Ê´Ù.
int function() 
{ 
    char *filename="/etc/config"; 
    FILE *config; 
    if(file_exist(filename)) 
    { 
        config=fopen(filename); 
    } 
} 
 
À§ ÇÔ¼ö´Â ¿ÏÀüÇÑ ÀçÁøÀÔ¼ºÀ» º¸ÀåÇÑ´Ù. ¾î¶² °æ¿ì¿¡ È£ÃâÇÏ´õ¶óµµ ½ÇÆÐÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª ÀÌ´Â ´ÜÀÏ ½º·¹µåÀÏ °æ¿ìÀÌ´Ù. ¸¸¾à ¸ÖƼ ½º·¹µå ȯ°æ¿¡¼­ ½ÇÇàµÈ´Ù¸é, ´Ù¸¥ ½º·¹µå°¡ ¼³Á¤ÆÄÀÏÀ» Á¦´ë·Î ´Ù·ê¼ö ÀÖÀ»Áö¸¦ º¸ÀåÇÒ ¼ö ¾ø´Ù.

POSIX ÇÔ¼öÀÇ Àç ÁøÀÔ¼º º¸Àå

POSIX ÇÔ¼öÀÇ »ó´ç¼ö´Â ¸ÖƼ ½º·¹µå ȯ°æÀ» °¡Á¤ÇÏÁö ¾Ê°í ¸¸µé¾îÁ³´Ù. ¶§¹®¿¡ POSIX C ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§´Â ÁÖÀÇÇÒ Çʿ䰡 ÀÖ´Ù. strtokÇÔ¼öµîÀº ÀçÁøÀÔ¼ºÀ» º¸ÀåÇÏÁö ¾Ê´Â´Ù. ÀÌ °æ¿ì strtok_r ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù. _rÀÌ ºÙÀº ÇÔ¼ö´Â ¿øÇü ÇÔ¼ö°¡ ÀçÁøÀÔ¼ºÀ» º¸ÀåÇϵµ·Ï Àç ÀÛ¼ºµÇ¾úÀ½À» ÀǹÌÇÑ´Ù.

°ü·Ã ±Û

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.