initstate_r - реентерабельный генератор
initstate_r(3)
реентерабельный генератор
Other Alias
random_r, srandom_r, setstate_r
ОБЗОР
#include <stdlib.h>
int random_r(struct random_data *buf, int32_t *result);
int srandom_r(unsigned int seed, struct random_data *buf);
int initstate_r(unsigned int seed, char *statebuf,
size_t statelen, struct random_data *buf);
int setstate_r(char *statebuf, struct random_data *buf);
Требования макроса тестирования свойств для glibc
(см. feature_test_macros(7)):
random_r(), srandom_r(), initstate_r(), setstate_r():
_SVID_SOURCE || _BSD_SOURCE
ОПИСАНИЕ
Эти функции являются реентрабельными эквивалентами функций, которые описаны
в
random(3). Они подходят для использования в многонитивых программах,
где каждой нити необходимо получить независимую, воспроизводимую
последовательность случайных чисел.
Функция random_r() подобна random(3), но вместо использования
информации о состоянии, хранящейся в глобальный переменной, в ней
используется информация о состоянии в аргументе, указанном в buf, который
должен быть проинициализирован ранее с помощью
initstate_r(). Сгенерированное случайное число возвращается в аргументе
result.
Функция srandom_r() подобна srandom(3), но инициализирует семя для
генератора случайных чисел, чьё состояние хранится в объекте, на который
указывает buf который должен быть проинициализирован ранее с помощью
initstate_r(), а не связывает семя с глобальной переменной состояния.
Функция initstate_r() подобна initstate(3), но инициализирует
состояние в объекте, на который указывает buf, а не в глобальной
переменной состояния.
Функция setstate_r() подобна setstate(3), но изменяет состояние в
объекте, на который указывает buf, а не в глобальной переменной
состояния.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении все функции возвращают 0. В случае ошибки
возвращается -1, а
errno устанавливается в соответствующее значение.
ОШИБКИ
EINVAL
Функции initstate_r() передан массив состояния меньше 8 байт.
EINVAL
Аргумент statebuf или buf функции setstate_r() равнялся NULL.
EINVAL
Аргумент buf или result функции random_r() равнялся NULL.
АТРИБУТЫ
Описание терминов данного раздела смотрите в
attributes(7).
Интерфейс Атрибут Значение
random_r(),
srandom_r(),
initstate_r(),
setstate_r()
безвредность в потоках: безвредно (MT-Safe race:buf)
СООТВЕТСТВИЕ СТАНДАРТАМ
Это функции являются расширениями glibc.