Функция pthread_rwlock destroy
Функция pthread_rwlock destroy
В листинге 8.3 приведена функция pthread_rwlock_destroy, уничтожающая блокировку чтения записи после окончания работы с ней.
8-13 Прежде всего проверяется, не используется ли блокировка в данный момент, а затем вызываются соответствующие функции для уничтожения взаимного исключения и двух условных переменных.
Листинг 8.З. Функция pthread_rwlock_destroy: уничтожение блокировки чтения-записи
//my_rwlock/pthread_rwlock_destroy.с
1 #include "unpipc.h"
2 #include "pthread_rwlock.h"
3 int
4 pthread_rwlock_destroy(pthread_rwlock_t *rw)
5 {
6 if (rw->rw_magic != RW_MAGIC)
7 return(EINVAL);
8 if (rw->rw_refcount != 0 ||
9 rw->rw_nwaitreaders != 0 || rw->rw_nwaitwriters != 0)
10 return(EBUSY);
11 pthread_mutex_destroy(&rw->rw_mutex);
12 pthread_cond_destroy(&rw->rw_condreaders);
13 pthread_cond_destroy(&rw->rw_condwriters);
14 rw->rw_magic = 0;
15 return(0);
16 }
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Функция mq_getattr
Функция mq_getattr В листинге 5.22 приведен текст функции mq_getattr, которая возвращает текущее значение атрибутов очереди.Листинг 5.22. Функция mq_getattr//my_pxmsg_mmap/mq_getattr.с1 #include "unpipc.h"2 #include "mqueue.h"3 int4 mymq_getattr(mymqd_t mqd, struct mymq_attr *mqstat)5 {6 int n;7 struct mymq_hdr *mqhdr;8 struct mymq_attr *attr;9 struct mymq_info
Функция pthread_rwlock_wrlock
Функция pthread_rwlock_wrlock Текст функции pthread_rwlock_wrlock приведен в листинге 8.6.11-17 Если ресурс заблокирован на считывание или запись (значение rw_refcount отлично от 0), мы приостанавливаем выполнение потока. Для этого мы увеличиваем rw_nwaitwriters и вызываем pthread_cond_wait с условной переменной
Функция sem_open
Функция sem_open В листинге 10.22 приведен текст функции sem_open, которая создает новый семафор или открывает существующий.Листинг 10.22. Функция sem_open//my_pxsem_fifo/sem_open.с1 #include "unpipc.h"2 #include "semaphore.h"3 #include <stdarg.h> /* для произвольного списка аргументов */4 mysem_t *5 mysem_open(const char *pathname, int
Функция sem_close
Функция sem_close Текст функции sem_close приведен в листинге 10.23.11-15 Мы закрываем оба дескриптора и освобождаем память, выделенную под тип sem_t.Листинг 10.23. Функция sem_close//my_pxsem_fifo/sem_close.с1 #include "unpipc.h"2 #include "semaphore.h"3 int4 mysem_close(mysem_t *sem)5 {6 if (sem->sem_magic != SEM_MAGIC) {7 errno =
Найти и уничтожить: Spybot – Search & Destroy
Найти и уничтожить: Spybot – Search & Destroy Spybot – Search & Destroy – еще одна бесплатная и полезная для домашнего пользователя программа, позволяющая не только найти и удалить проникшие в систему разнообразные типы Spyware-компонентов, но и препятствовать инфицированию. Adware-программы
Функция SUM
Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Хэш-функция.
Хэш-функция. Еще одно важное преимущество использования PGP состоит в том, что PGP применяет так называемую «хэш-функцию», которая действует таким образом, что в том случае какого-либо изменения информации, пусть даже на один бит, результат «хэш-функции» будет совершенно
Функция uni()
Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book
Хэш-функция
Хэш-функция Однако описанная выше схема имеет ряд существенных недостатков. Она крайне медлительна и производит слишком большой объём данных — по меньшей мере вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования