Вот два примера кода из GLib:
GMainContext *
g_main_context_ref (GMainContext *context)
{
  g_return_val_if_fail (context != NULL, NULL);
  g_return_val_if_fail (g_atomic_int_get (&context->ref_count) > 0, NULL);
  g_atomic_int_inc (&context->ref_count);
  return context;
}
void
g_main_context_unref (GMainContext *context)
{
  GSource *source;
  g_return_if_fail (context != NULL);
  g_return_if_fail (g_atomic_int_get (&context->ref_count) > 0);
  if (!g_atomic_int_dec_and_test (&context->ref_count))
    return;
  /* ... */
}
Внимание, вопрос: зачем перед инкрементированием и декрементирование счётчика ссылок выполняется его проверка на 0?

    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум GLib проблема с потоками GMainLoop (2014)
- Форум Аналог QThread. (2004)
- Форум [pidgin][надёжно]keyring\wallet (2010)
- Форум Что может течь в этих функциях? (2015)
- Форум Подсчет ссылок^Wлюдей (2010)
- Форум QT блокирует поток gstreamer'a (2013)
- Форум gtk_main() (2013)
- Форум ROX-Filer и не юникодная локаль. Патч (2004)
- Форум К владельцам NVIDIA (2008)
- Форум Куда пропадают пакеты? (2014)