The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 7.10 Асинхронное уведомление с помощью SIGEV_THREAD

Распечатка 7.10 Асинхронное уведомление с помощью SIGEV_THREAD

Предыдущая  Содержание  Следующая V*D*V

Распечатка 7.10.

 

struct sigevent notif;

sigset_t sig_set;

siginfo_t info;

      ....

 

/*

 * Указываем уведомление как SIGEV_THREAD. Обратите внимание,

 * что когда вызывается функция уведомления, она работает в

 * отдельном потоке

 */

notif.sigev_notify = SIGEV_THREAD;

/* Процедура уведомления, которая будет вызвана */

notif.sigev_notify_function = notify_routine;

 

/*

 * Передаём в функцию уведомления, когда она вызывается,

 * id очереди сообщений как аргумент 

 */

notif.sigev_value.sival_int = ds;

/* Поток уведомления должен быть в состоянии DETACHED */

notif.sigev_notify_attributes = NULL;

 

/* Наконец, настраиваем уведомление */

if (mq_notify(ds, &notif)){

  perror("mq_notify");

  return -1;

}

           ....

 

/*

 * .. а это процедура уведомления. Она будет вызываться

 * каждый раз при поступлении в очередь сообщения.

 */

void notify_routine(sigval_t value){

            ...

  /* Теперь, конечно, можно получить это сообщение. */

  if ((len = mq_receive(value.sival_int, new_text, SIZE,

                        &prio)) == -1)

    perror("Receiving message error");

            ...

}

 

Предыдущая  Содержание  Следующая