| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 29. libpq - C ¶óÀ̺귯¸® | Fast Forward | Next |
PostgreSQL¹èÆ÷¹°·ÎºÎÅÍÀÇ ±¸Ãà½ÃÀÇconfigureÄ¿¸Çµå ¶óÀÎ ¿É¼Ç¿¡--enable-thread-safety°¡ »ç¿ëµÇ°í ÀÖ´Â °æ¿ì, libpq´Â ÀçÁøÀÔÇϰí, thread ¼¼ÀÌÇÁ°¡ µË´Ï´Ù. Ãß°¡ÀûÀ¸·Î, ¾îÇø®ÄÉÀÌ¼Ç Äڵ带 ÄÄÆÄÀÏ ÇÒ ¶§ ÄÄÆÄÀÏ·¯ÀÇ Ä¿¸Çµå ¶óÀÎ ¿É¼Ç¿¡ Ãß°¡ÇÒ Çʿ䰡 ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. thread¸¦ À¯È¿ÇÏ°Ô ÇÑ ¾îÇø®ÄÉÀ̼ÇÀÇ ±¸Ãà ¹æ¹ý¿¡ ´ëÇÑ Á¤º¸´Â »ç¿ëÇÏ´Â ½Ã½ºÅÛÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ Áֽʽÿä. ¶ÇÇÑ, PTHREAD_CFLAGS¿Í PTHREAD_LIBS¿¡ °üÇØ¼src/Makefile.globalµµ »ìÆìÁֽʽÿä. ÀÌÇÏÀÇ ÇÔ¼ö¿¡ ÀÇÇØ, libpqÀÇ thread ¾ÈÀü¼º »óŸ¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
thread¿¡ °üÇÑ 1°³ÀÇ Á¦¾àÀ¸·Î¼ ´Ù¸¥ thread·ÎºÎÅÍ µ¿½Ã¿¡ µ¿ÀÏÇÑPGconn¿ÀºêÁ§Æ®¸¦ Á¶ÀÛÇÒ ¼ö ¾ø½À´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î ´Ù¸¥ thread·ÎºÎÅÍ µ¿ÀÏ Á¢¼Ó ¿ÀºêÁ§Æ®¸¦ °³ÀÔ½ÃÄÑ Ä¿¸Çµå¸¦ µ¿½Ã¿¡ ¹ßÇàÇÒ ¼ö ¾ø½À´Ï´Ù. (Ä¿¸ÇµåÀÇ µ¿½Ã ½ÇÇàÀÌ ÇÊ¿äÇÑ °æ¿ì, Á¢¼ÓÀ» º¹¼ö·Î »ç¿ëÇØ Áֽʽÿä. )
PGresult ¿ÀºêÁ§Æ®´Â »ý¼º ÈÄ, read Àü¿ëÀÌ µË´Ï´Ù. µû¶ó¼, thread»çÀ̸¦ ÀÚÀ¯·Ó°Ô °Ç³Î ¼ö ÀÖ½À´Ï´Ù.
ÃßõµÇÁö ¾Ê´Â ÇÔ¼ö PQrequestCancel³ª PQoidStatus´Â thread ¼¼ÀÌÇÁ°¡ ¾Æ´Ï±â ¶§¹®¿¡, multi-thread ÇÁ·Î±×·¥¿¡¼´Â »ç¿ëµÇÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù.
PQrequestCancel´Â PQcancel¿¡, PQoidStatus´Â PQoidValue¿¡ ¿Å°Ü³õÀ» ¼ö ÀÖ½À´Ï´Ù.
¾îÇø®ÄÉÀÌ¼Ç Áß¿¡¼ Kerberos(´õ¿ílibpqÀÇ ³»ºÎ¿¡¼)¸¦ ÀÌ¿ëÇϰí ÀÖ´Â °æ¿ì, Kerberos ÇÔ¼ö´Â thread ¼¼ÀÌÇÁ°¡ ¾Æ´Ï±â ¶§¹®¿¡ Kerberos È£Ãâ ÁÖÀ§¸¦ Àá±Û Çʿ䰡 ÀÖ½À´Ï´Ù.
libpq¿Í ¾îÇø®ÄÉÀ̼ǰ£ÀÇ ¶ô 󸮸¦ ÇùÁ¶½ÃŰ´Â ¹æ¹ýÀ¸·Î¼libpqÀÇ ¼Ò½º ÄÚµåPQregisterThreadLockÇÔ¼ö¸¦ ÂüÁ¶ÇØ Áֽʽÿä.
thread ¾îÇø®ÄÉÀ̼ǿ¡¼ ¹®Á¦°¡ ÀϾÀ» °æ¿ì, src/tools/thread³»ÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇØ, Ç÷§ÆûÀÌ thread ¼¼ÀÌÇÁ°¡ ¾Æ´Ñ ÇÔ¼ö¸¦ °¡Áö°í ÀÖÁö ¾ÊÀºÁö È®ÀÎÇØ Áֽʽÿä. ÀÌ ÇÁ·Î±×·¥Àº configureÀ¸·Î ½ÇÇàµÇÁö¸¸, ¹ÙÀ̳ʸ® ¹èÆ÷¹°ÀÇ °æ¿ì´Â ¹ÙÀ̳ʸ® ±¸Ãà½ÃÀÇ ¶óÀ̺귯¸®¿Í ½Ã½ºÅÛÀÇ ¶óÀ̺귯¸®°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.