Инициализация и разрушение спинлока
Инициализация и разрушение спинлока
int pthread_spin_init(pthread_spinlock_t* spinner, int pshared);
Функция инициализирует объект синхронизации спинлока блокировки, на который указывает аргумент spinner, и устанавливает для него параметр доступа из других процессов в соответствии со значением переменной pshared. Эта переменная может принимать следующие значения:
• PTHREAD_PROCESS_SHARED — с объектом спинлок может оперировать поток любого процесса, имеющего доступ к памяти, в которой распределен объект спинлок;
• PTHREAD_PROCESS_PRIVATE — доступ к объекту синхронизации возможен только для потоков процесса, из адресного пространства которого была распределена память объекта синхронизации.
В случае успешного завершения функция возвращает нулевое значение, в противном случае — один из следующих кодов ошибок:
AGAIN — системе не хватает ресурсов для инициализации блокировки;
EBUSY — объект крутящейся блокировки, на который указывает spinner, уже инициирован;
EINVAL — некорректный объект spinner;
ENOMEM — система не имеет достаточного количества свободной памяти для создания нового объекта.
int pthread_spin_destroy(pthread_spinlock_t* spinner);
Функция деинициализирует объект крутящейся блокировки. После деинициализации для последующего применения объекта он должен быть вновь инициализирован. Обратите внимание, результат функции не определен, если поток в данный момент крутится на блокировке, на которую указывает spinner, либо если объект spinner не был инициализирован.
Возвращаемые значения:
EOK — успешное выполнение;
EBUSY — блокировка используется другим потоком и не может быть разрушена;
EINVAL — некорректный объект spinner.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Разрушение объекта мьютекс
Разрушение объекта мьютекс int pthread_mutex_destroy(pthread_mutex_t* mutex);Вызов разрушает объект мьютекс, на который указывает переменная mutex. После чего эта переменная не может быть использована без предварительного вызова pthread_mutex_init().Возвращаемые значения:EOK — успешное завершение;EBUSY -
Разрушение блока параметров
Разрушение блока параметров int pthread_condattr_destroy(pthread_condattr_t* attr);Функция разрушает блок параметров условной переменной, на которые указывает attr, после чего он уже не может использоваться без повторной инициализации.На практике разрушение параметров объекта синхронизации не
Разрушение условной переменной
Разрушение условной переменной int pthread_cond_destroy(pthread_cond_t* cond);Вызов функции деинициализирует условную переменную cond. Для дальнейшего использования условной переменной, на которую ссылается cond, ее необходимо инициализировать вызовом pthread_cond_init(). Функция может
Инициализация и разрушение барьера
Инициализация и разрушение барьера int pthread_barrier_init(pthread_barrier_t* barrier, const pthread_barrierattr_t* attr, unsigned int count);Функция инициализирует объект синхронизации типа барьер, после чего его можно использовать. В атрибутах барьера устанавливается (или запрещается) возможность доступа к
Захват и освобождение спинлока
Захват и освобождение спинлока int pthread_spin_lock(pthread_spinlock_t* spinner);int pthread_spin_trylock(pthread_spinlock_t* spinner);Это функции захвата и попытки захвата крутящейся блокировки соответственно. Как и для мьютекса, если объект spinner в момент захвата свободен, то поток, вызвавший одну из этих функций,
8.9.1 Инициализация RIP
8.9.1 Инициализация RIP При запуске каждый маршрутизатор должен знать только о сети, к которой он подключен. Маршрутизатор RIP отправляет эти сведения широковещательной рассылкой на все соседние с ним в локальной сети маршрутизаторы. Кроме того, эти же сведения посылаются
Разрушение мифа о главном персонаже
Разрушение мифа о главном персонаже Считается, что главная цель дизайна сайта, ориентированного на пользователя, – обеспечить наилучшие условия пребывания на нем главного персонажа. Но это все равно что строить супермаркет, в котором все товары располагаются на высоте
R.12.6 Инициализация
R.12.6 Инициализация Объект класса без конструкторов, без частных или защищенных членов, без виртуальных функций и без базовых классов можно инициализировать с помощью списка инициализаторов (§R.8.4.1). Объект класса с конструктором должен инициализироваться или иметь
5.2.2. Инициализация семафоров
5.2.2. Инициализация семафоров Выделение и инициализация семафора — две разные операции. Чтобы проинициализировать семафор, вызовите функцию semctl(), задав второй аргумент равным нулю, а третий аргумент — равным константе SETALL. Четвертый аргумент должен иметь тип union semun, поле
Инициализация
Инициализация Переменной в объявлении может быть присвоено начальное значение посредством инициализатора. Записи инициализатора в объявлении предшествует знак равенства=<инициализатор>Можно инициализировать переменные любого типа. Функции не инициализируются.
14.1. Инициализация класса
14.1. Инициализация класса Рассмотрим следующее определение класса:class Data {public:int ival;char *ptr;};Чтобы безопасно пользоваться объектом класса, необходимо правильно инициализировать его члены. Однако смысл этого действия для разных классов различен. Например, может ли ival
5.2.4 Инициализация
5.2.4 Инициализация Использование для обеспечения инициализации объекта класса функций вроде set_date() (установить дату) неэлегантно и чревато ошибками. Поскольку нигде не утверждается, что обект должен быть инициализирован, то программист может забыть это сделать, или (что
Разрушение PAH в космосе Дмитрий Вибе
Разрушение PAH в космосе Дмитрий Вибе Опубликовано 02 января 2014 Вы, возможно, заметили, что мои колонки в последнее время появляются нерегулярно. Увы, много приходится писать и другого: за осень–зиму мы с коллегами написали девять отчётов. Угадайте,
О том, как в галактиках перемешаны разрушение и созидание Дмитрий Вибе
О том, как в галактиках перемешаны разрушение и созидание Дмитрий Вибе Опубликовано 04 августа 2013 В предпредыдущей колонке я мельком упомянул стимулированное звездообразование, точнее, рождение новых поколений звёзд, стимулированное тем или иным
Инициализация
Инициализация На этапе инициализации в зависимости от входных параметров устанавливаются переменные состояния, необходимые для валидации пути сертификации [70]. В переменных состояния сохраняются различные ограничения, учитываемые при валидации пути. Переменные