static int initCount = 0;
int objInit(void)
{
int i;
/* Check for reentrancy */
TaskLock ();
i = initCount++;
TaskUnlock ();
if (i > 0)
{
while (!initialized)
TaskDelay (100);
return (OK);
}
......
}是否应将变量initCount声明为volatile
发布于 2013-02-27 11:43:42
不,它不需要是volatile。然而,TaskLock ()必须设置某种内存屏障,以确保操作按该顺序执行,即首先锁定,然后加载initCount。很可能你的锁原语已经做到了这一点。
Volatile: Almost Useless for Multi-Threaded Programming。
https://stackoverflow.com/questions/15103765
复制相似问题