2015-10-12 3 views
0

Я пишу программу SMT, и я пытаюсь обход интересной проблемы.Что касается PThread и PThread Barriers

Мне нужны все мои функции, чтобы выйти вместе, однако некоторые потоки застряли на барьерах, даже когда я их не хочу.

Мой вопрос: что происходит, когда я удаляю барьер? Делают ли резьбы при выпуске барьера? Есть ли способ сигнализировать о выходе на определенный барьер, даже если количество нитей на барьере не было достигнуто?

Благодаря

+0

Неопределенное поведение. – EOF

+0

Не блокируйте нить на барьере, если вы не хотите, чтобы она была заблокирована на барьере. Просто скопируйте именно то, что вам нужно. –

+0

@EOF благодарит, это подтверждает то, что я хоть и что написал caf –

ответ

0

Это не законно называть pthread_barrier_destroy(), если есть какая-либо тема, заблокированная на барьере.

Когда ваша нить решает выйти в начале ситуации, когда другие потоки могут ждать на ней при барьере, она должна вызывать pthread_barrier_wait() перед выходом.