1

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

假设有n线程(n不等于1)

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

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

非常感谢。

非常感谢。

4

1 回答 1

5

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

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

于 2012-07-20T13:41:48.073 回答