typedef CComAutoCriticalSection AutoCriticalSection;
ÁÖÀÇ
Typedef À̸§ AutoCriticalSection ÂüÁ¶ Ŭ·¡½º CComAutoCriticalSection¸¦ Ãëµæ ÇÏ °í Áß¿ä ¼½¼Ç °³Ã¼ÀÇ ¼ÒÀ¯±ÇÀ» °ø°³¿¡ ´ë ÇÑ ¸Þ¼µå¸¦ Á¦°ø ÇÏ´Â CComMultiThreadModel¸¦ »ç¿ë ÇÏ´Â °æ¿ì¡£
CComSingleThreadModel ¹× CComMultiThreadModelNoCS ¿¡ AutoCriticalSection¿¡ ´ë ÇÑ Á¤Àǰ¡ Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù. ´ÙÀ½ Ç¥¿¡¼ ½º·¹µù ¸ðµ¨ Ŭ·¡½º¿Í AutoCriticalSection ¿¡ ÀÇÇØ Áß¿ä ¼½¼Ç Ŭ·¡½º ÂüÁ¶ÀÇ °ü°è¸¦ º¸¿© ÁÝ´Ï´Ù.:
| Ŭ·¡½º¿¡ Á¤ÀÇ µÈ | Ŭ·¡½º ÂüÁ¶ |
| CComMultiThreadModel | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
AutoCriticalSection, À̿ܿ¡ typedef À̸§ CriticalSectionÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤ ÇÏÁö ¾Ê¾Æ¾ß AutoCriticalSection Àü¿ª °³Ã¼ ¶Ç´Â Á¤Àû Ŭ·¡½º ¸â¹ö¿¡´Â CRT ½ÃÀÛ Äڵ带 Á¦°Å ÇÏ·Á´Â °æ¿ì¡£
¿¹Á¦
´ÙÀ½ ÄÚµå´Â CComObjectRootEx ¿¡¼ °¡Á®¿Â¡£
templatelt; ThreadModel Ŭ·¡½º >
CComObjectRootEx Ŭ·¡½º: °ø¿ë CComObjectRootBase
{
°ø°³:
? typedef ThreadModel _ThreadModel;
? typedef _ThreadModel::AutoCriticalSection _CritSec;
ULONG InternalAddRef)
? {
???? ...
???? ¹Ýȯ _ThreadModel::Increment(&m_dwRef);
? }
? ...
? void Àá±Ý () {m_critsec.Àá±Ý (); }
? ...
°³ÀÎ:
? _CritSec m_critsec;
}
´ÙÀ½ Ç¥¿¡¼ ThreadModel ÅÛÇø´ ¸Å°³ º¯¼ö ¹× ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ »ç¿ë ÇÏ´Â ½º·¹µù ¸ðµ¨¿¡ µû¶ó InternalAddRef ¹× Àá±Ý ¹æ¹ýÀÇ °á°ú º¸¿©:
ThreadModel = CComObjectThreadModel
| ´ÜÀÏ ¶Ç´Â ¾ÆÆÄÆ® | ¹«·á | |
| InternalAddRef | ÁõºÐ ½º·¹µå·ÎºÎÅÍ ¾ÈÀü ÇÏÁö ¾Ê½À´Ï´Ù. | Áõ°¡ ½º·¹µå·ÎºÎÅÍ ¾ÈÀü¡£ |
| Àá±Ý | ¾Æ¹«°Íµµ; °Å±â ¾Æ¹« ÀӰ踦 Àá±×·Á¸é¡£ | Áß¿ä ¼½¼ÇÀÌ Àá°Ü¡£ |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| ´ÜÀÏ ¶Ç´Â ¾ÆÆÄÆ® | ¹«·á | |
| InternalAddRef | ÁõºÐ ½º·¹µå·ÎºÎÅÍ ¾ÈÀü ÇÏÁö ¾Ê½À´Ï´Ù. | Áõ°¡ ½º·¹µå·ÎºÎÅÍ ¾ÈÀü¡£ |
| Àá±Ý | ¾Æ¹«°Íµµ; °Å±â ¾Æ¹« ÀӰ踦 Àá±×·Á¸é¡£ | ¾Æ¹«°Íµµ; °Å±â ¾Æ¹« ÀӰ踦 Àá±×·Á¸é¡£ |
CComMultiThreadModel °³¿ä |nbsp; Ŭ·¡½º ¸â¹ö(&N)
Âü°í Ç׸ñnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModelNoCS(&N)