如何找到屏障功能的实现?

时间:2012-03-22 02:55:33

标签: c linux pthreads

我想实现新的屏障功能。

首先,我想了解默认屏障实现。 (phtread,linux)

我找到了pthread.h(/ usr / include)

但是在这个文件中我找不到屏障实现。只有声明。

1040 /* Functions to handle barriers.  */                                       
1041 
1042 /* Initialize BARRIER with the attributes in ATTR.  The barrier is
1043    opened when COUNT waiters arrived.  */
1044 extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
1045                  __const pthread_barrierattr_t *__restrict
1046                  __attr, unsigned int __count)
1047      __THROW __nonnull ((1));
1048 
1049 /* Destroy a previously dynamically initialized barrier BARRIER.  */
1050 extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
1051      __THROW __nonnull ((1));
1052 
1053 /* Wait on barrier BARRIER.  */
1054 extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
1055      __THROW __nonnull ((1));

请教我哪里有屏障功能实施。

2 个答案:

答案 0 :(得分:4)

glibc屏障实施位于pthread_barrier_init.cpthread_barrier_wait.cpthread_barrier_destroy.c文件中。 DESIGN-barrier.txt中的伪代码实现可能也很有意义。

答案 1 :(得分:2)

http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/barrier.c

看看int barrier_wait(barrier_t * barrier)如何使用计数器来跟踪挂起的线程数。