ВУЗ:
Составители:
68
• int pthread_cond_destroy(pthread_cond_t* cond) – уничтожает
условную переменную cond;
• int pthread_cond_signal(pthread_cond_t* cond) – информирова-
ние о наступлении события потоков, ожидающих на условной перемен-
ной cond;
• int pthread_cond_broadcast(pthread_cond_t* cond) – информи-
рование о наступлении события потоков, ожидающих на условной пе-
ременной cond. При этом возобновлены будут все ожидающие потоки;
• int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t*
mutex) – ожидание события на условной переменной cond.
Рассмотренных средств достаточно для решения разнообразных за-
дач синхронизации потоков. Вместе с тем они обеспечивают взаимоис-
ключение на низком уровне и не наполнены семантическим смыслом.
При непосредственном их использовании легко допустить ошибки раз-
личного рода: забыть выйти из критической секции, использовать при-
митив не по назначению, реализовать вложенное использование прими-
тива и т. д. При этом операции с мьютексами, семафорам и условными
переменными оказываются разбросанными по всему программному ко-
ду приложения, что повышает вероятность появления ошибки и услож-
няет ее поиск и устранение.
3.1.5. Компиляция многопоточной программы
Для компиляции и сборки многопоточной программы необходимо
иметь следующее:
• стандартный компилятор С (cc, gcc, g++т. д.);
• файлы заголовков: <thread.h>, <pthread.h>, <errno.h>, <limits.h>,
<signal.h>, <unistd.h>;
• библиотеку реализации потоков (libpthread);
• другие библиотеки, совместимые с многопоточными приложе-
ниями (libc, libm, libw, libintl, libnsl, libsocket, libmalloc, libmapmalloc и др.).
Файл заголовка <pthread.h>, используемый с библиотекой lpthread,
компилирует код, который является совместимым с интерфейсами мно-
гопоточности, определенными стандартом POSIX 1003.1c.
Для компиляции программы, использующей потоки и реентера-
бельные системные функции, необходимо дополнительно указать в
строке вызова компилятора следующие аргументы:
-D_REENTERANT –lpthread.
Команда компиляции D включает макрос _REENTERANT. Этот
макрос указывает, что вместо обычных функций стандартной библиоте-
ки к программе должны быть подключены их реентерабельные аналоги.
Страницы
- « первая
- ‹ предыдущая
- …
- 66
- 67
- 68
- 69
- 70
- …
- следующая ›
- последняя »