|
Параллельное и распределенное программирование на С++Объединение MPI-, PVM- и POSIX-средств дает сотни функций с аналогичными целями. Затратив время на упрощение этой функциональности в интерфейсных классах, вы позволите программисту понизить уровень сложности, связанный с параллельным и распределенным программированием. Кроме того, эти интерфейсные классы становятся компонентами, которые можно многократно использовать в различных приложениях. Чтобы понять, как подойти к созданию «полуширокого» интерфейса, построим интерфейсный класс для POSIX-семафора. И хотя семафор не является частью библиотеки Pthread, он находит аналогичные применения в многопоточной среде. Его можно использовать в среде, которая включает параллельно выполняемые процессы и потоки. Поэтому в некоторых случалх требуется объект синхронизации более общего характера, чем наш класс mutex. Определение класса semaphore показано в листинге 11.10. // Листинг 11.10. Объявление класса semaphore class semaphore : public synchronization_variable( protected: sem_t * Semaphore; public://.. . int lock(void); int unlock(void); int trylock(void); //. . . }; Синопсис <semaphore.h> int sem_init(sem_t *, int, unsigned int) ; int sem_destroy(sem_t *); sem_t *sem_open(const char *, int, ...); int sem_close(sem_t *); int sem_unlink(const char *); int sem_wait(sem_t *); int sem_trywait(sem_t *); int sem_post(sem_t *); int sem_getvalue(sem__t *, int *); Обратите внимание на то, что класс semaphore имеет такой же интерфейс, как и наш класс mutex ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|