LINUX.ORG.RU

Почему в линуксе не доступны pthreads' barriers


0

0

Пробовал компилировать код с барьерами из POSIX threads: под Solaris 9 барьеров нету, под Солярисом 10 они появились, но это понятно, а вот почему под Линуксом нет барьеров ... доктор, это нормально?

Какой дистр использовал не вспомню, но пробовал на паре машин вполне современных..

★★

т.е. они может и есть, но тип pthread_barrier_t не распознаётся при компиляции

pvv ★★
() автор топика

FC4: в /usr/include/pthread.h есть определения барьерных функций, определение pthread_barrier_t лежит в /usr/include/bits/pthreadtypes.h.

может быть, при компиляции надо указывать какой-то свитч вроде -D_XOPEN_SOURCE=600

tailgunner ★★★★★
()
Ответ на: комментарий от theserg

> uname -a 
> ls /lib/libpthread*

А причем здесь это? Ядро точно не играет роли, дистрибутив я указал. Но если надо, вот:

[vmg@xarn ~]$ uname -a
Linux xarn 2.6.19 #5 PREEMPT Sat Dec 23 02:14:23 MSK 2006 i686 i686 i386 GNU/Linux
[vmg@xarn ~]$ ls /lib/libpthread*
/lib/libpthread-2.3.5.so  /lib/libpthread.so.0
[vmg@xarn ~]$ 

tailgunner ★★★★★
()
Ответ на: комментарий от theserg

> ну короче есть там барьеры

> -lpthread хоть указал?

Эй, это не у меня проблемы с барьерами :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> может быть, при компиляции надо указывать какой-то свитч вроде -D_XOPEN_SOURCE=600

Ну да, барьеры, как я понимаю, SUSV3 присущи, и для того, чтобы pthread_barrier_t увидеть, надо сказать #define _XOPEN_SOURCE 600 перед #include <pthread.h>.

Можно сказть сильнее, #define _GNU_SOURCE

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

спасибо! указал _XOPEN_SOURCE=600
только жутко неудобно - ни насильно прописывать в заголовках, ни как опцию указывать :-(

pvv ★★
() автор топика
Ответ на: комментарий от pvv

добавьте в Makefile в раздел CFLAGS -D_XOPEN_SOURCE=600

fghj ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.