.\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH pthread_once 3 (date) "Linux man-pages (unreleased)" . . .SH NAME pthread_once \- once-only initialization . . .SH SYNOPSIS .B #include .P .BI "pthread_once_t " once_control " = PTHREAD_ONCE_INIT;" .P .BI "int pthread_once(pthread_once_t *" once_control ", typeof(void (void)) *" init_routine ; . . .SH DESCRIPTION The purpose of .BR pthread_once () is to ensure that a piece of initialization code is executed at most once. The .I once_control argument points to a static or extern variable statically initialized to .BR PTHREAD_ONCE_INIT . .P The first time .BR pthread_once () is called with a given .I once_control argument, it calls .I init_routine with no argument and changes the value of the .I once_control variable to record that initialization has been performed. Subsequent calls to .BR pthread_once () with the same .I once_control argument do nothing. . . .SH "RETURN VALUE" .BR pthread_once () always returns 0. . . .SH ERRORS None.