POSIX线程 - 只执行一次

时间:2012-07-20 13:37:58

标签: c pthreads

确保代码区域只能由一个pthread执行的最简单方法是什么?

假设有n个帖子(n不等于1)

// do this once
int x;
x = some_function(); 
printf( "%d\n", x );

我是否使用共享变量和屏障?让所有变量将其线程ID(?)分配给共享变量,然后写入变量的最后一个线程可能是主线程?然后在程序中你可以根据共享变量检查线程ID吗?

非常感谢。

非常感谢。

1 个答案:

答案 0 :(得分:5)

尝试使用pthread_once()函数。它是为了这个明确的目的而制作的。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_once.html

您可以使用共享变量来存储结果。要确保变量稳定,可以使用互斥锁包装pthread_once()。所有线程都需要锁定和解锁互斥锁,而大多数线程不会在中间执行任何操作,但这样可以确保在允许任何线程继续之前完全更新变量。