´ÙÀ½ ÀÌÀü Â÷·Ê

16. ŸÀӾƿô, ±×¸®°í I/O¿Í Idle ÇÔ¼öµé

16.1 ŸÀӾƿô

¾Æ¸¶ gtk_main¿¡¼­ ¾î¶»°Ô GTK¿¡°Ô À¯¿ëÇÑ ÀÛ¾÷À» ÇÏ°Ô ¸¸µéÁö ±Ã±ÝÇÒ °ÍÀÌ´Ù. ¿©±â¿¡´Â ¸î°¡Áö ¿É¼ÇÀÌ ÀÖ´Ù. ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é ¸Å millisecond¸¶´Ù È£ÃâµÉ ŸÀӾƿô ÇÔ¼ö¸¦ ¸¸µé¼ö ÀÖ´Ù.

gint gtk_timeout_add (guint32 interval,
                      GtkFunction function,
                      gpointer data);

ù¹ø° ÀÎÀÚ´Â ¿ì¸®°¡ ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ °É¸° ½Ã°£ÀÌ´Ù. µÎ¹ø°´Â ºÎ¸£·Á Çß´ø ÇÔ¼ö°í, ¼¼¹ø°´Â ÀÌ callbackÇÔ¼ö·Î ³Ñ°ÜÁø µ¥ÀÌÅÍ´Ù. ¸®ÅÏ°ªÀº Á¤¼öÇüÀÇ "tag"À¸·Î ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ŸÀӾƿôÀ» ÁßÁöÇϱâ À§ÇØ ¾²ÀδÙ.

void gtk_timeout_remove (gint tag);

¿ì¸®´Â callbackÇÔ¼ö¿¡¼­ 0¶Ç´Â FALSE¸¦ ¸®ÅÏÇÔÀ¸·Î½á ÀÌ Å¸ÀӾƿô ÇÔ¼ö¸¦ ÁßÁö½Ãų ¼öµµ ÀÖ´Ù. ´ç¿¬È÷ ÀÌ°ÍÀº ¿ì¸®ÀÇ ÇÔ¼ö°¡ °è¼ÓµÇ±â À§Çؼ­´Â 0ÀÌ ¾Æ´Ñ °ª, ¸»ÇÏÀÚ¸é TRUE¸¦ ¸®ÅÏÇØ¾ß ÇÔÀ» ÀǹÌÇÑ´Ù.

¿ì¸®ÀÇ callbackÇÔ¼öÀÇ ¼±¾ðÀº ÀÌ·± ÇüÅ·ΠÇؾßÇÑ´Ù.

gint timeout_callback (gpointer data);

16.2 IO¸¦ °¨½ÃÇϱâ

GTKÀÇ ¶Ç´Ù¸¥ ±¦ÂúÀº ±â´É Çϳª´Â, ¿ì¸®¸¦ À§ÇØ ÆÄÀÏ ½Äº°ÀÚ(file descriptor) ÀÇ µ¥ÀÌÅ͸¦ üũÇØ Áشٴ Á¡ÀÌ´Ù(open(2) ȤÀº socket(2)·Î ¸®ÅϵǴ´ë·Î). ÀÌ°ÍÀº ƯÈ÷ ³×Æ®¿÷ ¾îÇÿ¡ À¯¿ëÇÏ´Ù. ÀÌ ÇÔ¼ö¸¦ º¸ÀÚ.

gint gdk_input_add (gint source,
                    GdkInputCondition condition,
                    GdkInputFunction  function,
                    gpointer data);

ù¹ø° ÀÎÀÚ´Â º¸°íÀÚ ÇÏ´Â file descriptor°í, µÎ¹ø°´Â GDK°¡ ãÀ» °ÍÀ» ¼³Á¤ÇØ ÁØ´Ù. ÀÌ°ÍÀº À̵é Áß Çϳª°¡ µÉ °ÍÀÌ´Ù.

GDK_INPUT_READ - ¿ì¸®ÀÇ file descriptor¸¦ ÀÐÀ» Áغñ°¡ µÈ µ¥ÀÌÅÍ°¡ ÀÖÀ» ¶§ ¿ì¸®ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

GDK_INPUT_WRITE - ¿ì¸®ÀÇ file descriptor°¡ ¾µ(write) Áغñ°¡ µÇ¾úÀ» ¶§ ¿ì¸®ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

ÀÌ¹Ì ´«Ä¡Ã«°ÚÁö¸¸, ¼¼¹ø° ÀÎÀÚ´Â À§ÀÇ Á¶°ÇÀÌ ¸¸Á·µÉ ¶§ È£ÃâµÉ ÇÔ¼ö°í, ³×¹ø°´Â ÀÌ ÇÔ¼ö¿¡ ³Ñ°ÜÁú µ¥ÀÌÅÍ´Ù.

¸®ÅÏ°ªÀº GDK°¡ file descriptor¸¦ ¸ð´ÏÅÍÇÏ´Â °ÍÀ» ¾Æ·¡ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ ¸ØÃß°Ô ÇÒ tagÀÌ´Ù.

void gdk_input_remove (gint tag);

CallbackÇÔ¼ö°¡ ¼±¾ðµÇ¾î¾ß ÇÑ´Ù.

void input_callback (gpointer data, gint source,
                     GdkInputCondition condition);

16.3 Idle ÇÔ¼ö

´õÀÌ»ó ¾Æ¹«°Íµµ ÀϾÁö ¾ÊÀ» ¶§ È£ÃâÇÒ ÇÔ¼ö´Â ¹«¾ùÀΰ¡?

gint gtk_idle_add (GtkFunction function,
                   gpointer data);

ÀÌ°ÍÀº ´õÀÌ»ó ¾Æ¹«°Íµµ ¹ß»ýÇÏÁö ¾ÊÀ» ¶§ GTK°¡ ÁöÁ¤µÈ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ÇØÁØ´Ù.

void gtk_idle_remove (gint tag);

ÀÌ ÇÔ¼öÀÇ ÀÎÀÚµéÀº À§¿¡¼­ ¼³¸íÇÑ ¾î´À °Í°ú ¸Å¿ì ºñ½ÁÇϱ⠶§¹®¿¡ ¿©±â¼­ ¶Ç ¼³¸íÇÏÁø ¾Ê°Ú´Ù. gtk_idle_addÀÇ Ã¹¹ø° ÀÎÀÚ·Î ÁÖ¾îÁø ÇÔ¼ö´Â ±âȸ°¡ ¿À¸é ¾ðÁ¦µçÁö È£ÃâµÉ °ÍÀÌ´Ù. ´Ù¸¥ °Íµé°ú ¸¶Âù°¡Áö·Î, FALSE¸¦ ¸®ÅÏÇÏ°Ô µÇ¸é idle ÇÔ¼ö´Â È£ÃâÀÌ Áß´ÜµÉ °ÍÀÌ´Ù.


´ÙÀ½ ÀÌÀü Â÷·Ê