【问题标题】:How to find barrier function's implementation?如何找到屏障功能的实现?
【发布时间】:2012-03-22 02:55:32
【问题描述】:

我想实现新的屏障功能。

首先,我想了解一下默认屏障的实现。 (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));

请教我障碍函数的实现在哪里。

【问题讨论】:

标签: c linux pthreads


【解决方案1】:

glibc 屏障实现在文件pthread_barrier_init.cpthread_barrier_wait.cpthread_barrier_destroy.c 中。 DESIGN-barrier.txt 中的伪代码实现可能也很有趣。

【讨论】:

    【解决方案2】:

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

    看看 int barrier_wait (barrier_t *barrier) 如何使用计数器来跟踪待处理线程的数量。

    【讨论】:

    • 请注意:我相信这是来自 David R. Butenhof 的“使用 POSIX 线程编程”的示例代码。
    • 好像是这样,知道那本书中代码示例的许可证是什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2015-01-04
    • 2015-03-09
    • 1970-01-01
    • 2021-05-14
    • 2013-11-30
    相关资源
    最近更新 更多