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