确保代码区域只能由一个pthread执行的最简单方法是什么?
假设有n
个帖子(n
不等于1)
// do this once
int x;
x = some_function();
printf( "%d\n", x );
我是否使用共享变量和屏障?让所有变量将其线程ID(?)分配给共享变量,然后写入变量的最后一个线程可能是主线程?然后在程序中你可以根据共享变量检查线程ID吗?
非常感谢。
非常感谢。
答案 0 :(得分:5)
尝试使用pthread_once()函数。它是为了这个明确的目的而制作的。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_once.html
您可以使用共享变量来存储结果。要确保变量稳定,可以使用互斥锁包装pthread_once()。所有线程都需要锁定和解锁互斥锁,而大多数线程不会在中间执行任何操作,但这样可以确保在允许任何线程继续之前完全更新变量。