Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73859

Вопрос по использованию pthread_once()

$
0
0

В качестве примера использования pthread_once() обычно приводится код наподобие следующего:

static pthread_once_t once = PTHREAD_ONCE_INIT;

void do()
{
  pthread_once(&once, &init);

  // do something
  ...
}

Но попался мне тут на днях в исходниках одного проекта немного другой пример использования:

void do()
{
  static pthread_once_t once = PTHREAD_ONCE_INIT;
  pthread_once(&once, &init);

  // do something
  ...
}

И закрались у меня подозрения что второй вариант не всегда гарантирует вызова init() только один раз в многопоточной программе т.к. в нем не исключены гонки при инициализации once. Развейте или подтвердите мои сомнения.

 , ,


Viewing all articles
Browse latest Browse all 73859

Trending Articles