±â¼ú ÀÚ·á: 94804 - ¸¶Áö¸· °ËÅä: 2003³â 5¿ù 5ÀÏ ¿ù¿äÀÏ - ¼öÁ¤: 2.0

INFO: ½º·¹µå ·ÎÄà ÀúÀå¼Ò °³¿ä

½Ã½ºÅÛ ÆÁº» ¹®¼­ÀÇ ³»¿ëÀº ±ÍÇϰ¡ »ç¿ëÇÏ´Â ¿î¿µ üÁ¦¿Í ´Ù¸¥ ¿î¿µ üÁ¦¿¡ ÇØ´çÇÕ´Ï´Ù. ¹®¼­ ³»¿ë Áß ±ÍÇÏ¿Í °ü·Ã ¾ø´Â ºÎºÐÀº Ç¥½ÃµÇÁö ¾Ê½À´Ï´Ù.
ÀÌ ¹®¼­´Â ÀÌÀü¿¡ ´ÙÀ½ ID·Î ÃâÆÇµÇ¾úÀ½: KR94804

ÀÌ ÆäÀÌÁö¿¡¼­

¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

¿ä¾à

TLS(½º·¹µå ·ÎÄà ÀúÀå¼Ò)´Â ÁÖ¾îÁø ÇÁ·Î¼¼½º¿¡ ÀÖ´Â °¢ ½º·¹µå¿¡¼­ ½º·¹µå Àü¿ë µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖµµ·Ï À§Ä¡¸¦ ÁÖ´Â ¹æ¹ýÀÔ´Ï´Ù.

TLS¸¦ À§ÇÑ ÇÔ¼ö¿¡´Â TlsAlloc(), TlsGetValue(), TlsSetValue() ¹× TlsFree()µîÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÇÔ¼ö´Â ÇÁ·Î¼¼½º¿¡ ÀÖ´Â °¢ ½º·¹µå¿¡ ´ëÇÑ ÀúÀå ¿µ¿ªÀ» ÂüÁ¶ÇÏ´Â TLS À妽º¸¦ °ü¸®ÇÕ´Ï´Ù. ÁÖ¾îÁø À妽º´Â ÀÚ½ÅÀ» ÇÒ´çÇÑ ÇÁ·Î¼¼½º ³»¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.

Visual C++ ÄÄÆÄÀÏ·¯´Â ¾Æ·¡¿Í °°Àº ´ëü ±¸¹®À» Áö¿øÇÕ´Ï´Ù.
_declspec( thread )
ÀÌ ±¸¹®Àº ÀÌ·¯ÇÑ API¸¦ Á÷Á¢ È£ÃâÇÏ´Â ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº VC++ "¾ð¾î ¹× ·±Å¸ÀÓ µµ¿ò¸»" µµ¿ò¸» ÆÄÀÏ¿¡ ÀÖ´Â _declspecÀÇ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.

Ãß°¡ Á¤º¸

TlsAlloc()¿¡ ´ëÇÑ È£ÃâÀº Àü¿ª TLS À妽º¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ ÇϳªÀÇ TLS À妽º´Â ÀÚ½ÅÀ» ÇÒ´çÇÑ ÇÁ·Î¼¼½º ³»ÀÇ ¸ðµç ½º·¹µå¿¡ ´ëÇØ À¯È¿ÇÕ´Ï´Ù. µû¶ó¼­ Àü¿ª ¶Ç´Â Á¤Àû º¯¼ö·Î ÀúÀåÇØ¾ß ÇÕ´Ï´Ù.

½º·¹µå ·ÎÄà ÀúÀå¼Ò´Â ´ÙÀ½°ú °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. TlsAlloc()ÀÌ È£ÃâµÇ¸é ÇÁ·Î¼¼½º ³»ÀÇ ¸ðµç ½º·¹µå´Â Àڽſ¡°Ô ¿¹¾àµÈ °íÀ¯ÇÑ ULONG_PTR Å©±âÀÇ °ø°£À» °®½À´Ï´Ù. ÀÌ °ø°£Àº ½ºÅà °ø°£ ³»¿¡ ÀÖÁö¸¸ ±¸Çö ¹æ½Ä¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ±×·¯³ª ÇϳªÀÇ TLS À妽º¸¸ ¹ÝȯµË´Ï´Ù. ÇÁ·Î¼¼½º¿¡ ÀÖ´Â °¢ ½º·¹µå´Â ÀÌ·¯ÇÑ ´ÜÀÏÀÇ TLS À妽º¸¦ »ç¿ëÇÏ¿© TlsAlloc()ÀÌ ¿¹¾àÇÑ °íÀ¯ °ø°£À» ÂüÁ¶ÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ ÀÌÀ¯·Î ÀÎÇØ, TlsAlloc()Àº ´ë°³ ÇÑ ¹ø¸¸ È£ÃâµË´Ï´Ù. ÀÌ ÇÔ¼ö´Â DLL_PROCESS_ATTACH( ÇÁ·Î¼¼½ºÀÇ Ã¹¹øÂ° ½º·¹µå°¡ DLL¿¡ ¿¬°áµÇ¾î ÀÖÀ½)¿Í DLL_THREAD_ATTACH(ÇÁ·Î¼¼½ºÀÇ ´ÙÀ½ ½º·¹µå°¡ ¿¬°áµÇ¾î ÀÖÀ½)¸¦ ±¸º°ÇÒ ¼ö Àֱ⠶§¹®¿¡ DLL¿¡¼­ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ù¹øÂ° ½º·¹µå°¡ TlsAlloc()¸¦ È£ÃâÇϰí Àü¿ª º¯¼ö ¶Ç´Â Á¤Àû º¯¼ö·Î TLS À妽º¸¦ ÀúÀåÇϰí DLL¿¡ ¿¬°áµÇ¾î ÀÖ´Â ´Ù¸¥ ¸ðµç ½º·¹µå´Â ÇØ´ç ·ÎÄà ÀúÀå °ø°£¿¡ ¿¢¼¼½ºÇϱâ À§Çؼ­ Àü¿ª º¯¼ö¸¦ ÂüÁ¶ÇÕ´Ï´Ù.

ÀϹÝÀûÀ¸·Î ÇϳªÀÇ TLS À妽º¸¸À¸·Î ÃæºÐÇÏÁö¸¸ ÇÁ·Î¼¼½º´Â TLS_MINIMUM_AVAILABLE À妽º±îÁö TLS À妽º¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù(64°³ ÀÌ»ó±îÁö °¡Áú ¼ö ÀÖ½À´Ï´Ù.)

ÀÏ´Ü TLS À妽º°¡ ÇÒ´çµÇ¾î ÀúÀåµÇ¸é ÇÁ·Î¼¼½º ³»ÀÇ ½º·¹µå´Â ÀÌ À妽º¸¦ »ç¿ëÇÏ¿© ÀÚ½ÅÀÇ ÀúÀå °ø°£¿¡ ÀÖ´Â °ªÀ» ¼³Á¤Çϰųª ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ½º·¹µå´Â ÀÚ½ÅÀÇ ·ÎÄà ÀúÀå¼Ò¿¡ ULONG_PTR Å©±âÀÇ °ªÀ» ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù(¿¹: ULONG_PTR °ª, µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅÍ µî). ÀÌ·¯ÇÑ ¸ñÀûÀ¸·Î TlsSetValue() ¹× TlsGetValue() API°¡ »ç¿ëµË´Ï´Ù.

ÇÁ·Î¼¼½º´Â TLS À妽ºÀÇ »ç¿ëÀÌ ³¡³ª¸é TlsFree()¸¦ »ç¿ëÇÏ¿© ÀÌ À妽º¸¦ ÇØÁ¦ÇÕ´Ï´Ù. ±×·¯³ª ÇÁ·Î¼¼½º¿¡ ÀÖ´Â ½º·¹µå°¡ ÀÚ½ÅÀÇ ·ÎÄà ÀúÀå °ø°£ ³»¿¡ µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ÀúÀåÇßÀ¸¸é TLS À妽º¸¦ ÇØÁ¦Çϱâ Àü¿¡ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò¾î¼­ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸Þ¸ð¸®°¡ ¼Õ½ÇµË´Ï´Ù.

ÀÚ¼¼ÇÑ ³»¿ëÀº "Win32 Programmer's Reference"ÀÇ "Processes and Threads"¿¡ ÀÖ´Â "Using Thread Local Storage"À» ÂüÁ¶ÇϽʽÿÀ.

¿¹Á¦

ÇÁ·Î¼¼½º ³»ÀÇ ½º·¹µå A°¡ TlsAlloc()À» È£ÃâÇϰí Àü¿ª º¯¼ö TlsIndex¿¡ ¹ÝȯµÈ À妽º¸¦ ÀúÀåÇÕ´Ï´Ù.
   TlsIndex = TlsAlloc();
±×·± ´ÙÀ½ ½º·¹µå A°¡ 100¹ÙÀÌÆ®ÀÇ µ¿Àû ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© ·ÎÄà ÀúÀå¼Ò¿¡ ÀúÀåÇÕ´Ï´Ù.
   TlsSetValue( TlsIndex, malloc(100) );
½º·¹µå A°¡ ½º·¹µå B¸¦ ¸¸µé°í TisIndex°¡ ÂüÁ¶ÇÏ´Â ·ÎÄà ÀúÀå °ø°£¿¡ À©µµ¿ì¿¡ ´ëÇÑ ÇÚµéÀ» ÀúÀåÇÕ´Ï´Ù
   TlsSetValue( TlsIndex, (LPVOID)hSomeWindow );
TlsIndex´Â ½º·¹µå B°¡ »ç¿ëÇÒ ¶§¿Í ½º·¹µå A°¡ »ç¿ëÇÒ ¶§ ¼­·Î ´Ù¸¥ À§Ä¡¸¦ ÂüÁ¶ÇÕ´Ï´Ù. °¢ ½º·¹µå´Â TlsIndex¿¡ ÀÖ´Â °°Àº °ªÀÌ ÂüÁ¶ÇÏ´Â °íÀ¯ À§Ä¡¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.

½º·¹µå B´Â Ưº°È÷ ·ÎÄà ÀúÀå¼Ò¿¡¼­ °ªÀ» ÇØÁ¦ÇÏÁö ¾Ê¾Æµµ µÇ¹Ç·Î ¾ÈÀüÇÏ°Ô Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù.

±×·¯³ª ½º·¹µå A°¡ Á¾·áµÇ±â Àü¿¡ ·ÎÄà ÀúÀå¼Ò¿¡ µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ¸ÕÀú ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù.
   free( TlsGetValue( TlsIndex ) );
±×·± ´ÙÀ½ TLS À妽º¸¦ ÇØÁ¦ÇÕ´Ï´Ù.
   if ( !TlsFree( TlsIndex ) )
      // TlsFree() failed.Handle error.

º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft Win32 Application Programming Interface?À»(¸¦) ´ÙÀ½°ú ÇÔ²² »ç¿ëÇßÀ» ¶§
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • Microsoft Windows 2000 Standard Edition
Ű¿öµå:?
kbinfo kbthread kbkernbase kbwinos2000 kbgrpkernbase kbntos400 kbntos350 kbwinos95 kbntos351 kbntos310 KB94804