Bu yüzden, dişli bir programın akışını kontrol etmek için C'de engeller oluşturabileceğinizi biliyorum. Bariyeri başlatabilir, iş parçacığınızı kullanabilir ve sonra imha edebilirsiniz. Bununla birlikte, aynı engelin tekrar kullanılıp kullanılamayacağından emin değilim (eğer bir döngüde olsaydı). Yoksa ikinci bir bekleme noktası için yeni bir engel mi kullanmalısınız? Örnek olarak, aşağıdaki kod doğru mu (aynı engeli yeniden kullanıyor)?C Yeniden Kullanılabilir Predread Bariyerler midir?
#include <pthread.h>
pthread_barrier_t barrier;
void* thread_func (void *not_used) {
//some code
pthread_barrier_wait(&barrier);
//some more code
pthread_barrier_wait(&barrier);
//even more code
}
int main() {
pthread_barrier_init (&barrier, NULL, 2);
pthread_t tid[2];
pthread_create (&tid[0], NULL, thread_func, NULL);
pthread_create (&tid[1], NULL, thread_func, NULL);
pthread_join(tid[0], NULL);
pthread_join(tid[1], NULL);
pthread_barrier_destroy(&barrier);
}
"pthread_barrier_init" tarafından döndürülen işlev değeri neydi? Ve diğer işlevler? –
Bir bariyer "akışı kontrol etmez", ancak bir senkronizasyon noktasıdır. Program akışı koşullu ifadeler vb. Tarafından kontrol edilir. – Olaf