应该将“initCount”变量声明为“volatile”吗?

时间:2013-02-27 03:41:29

标签: c multithreading

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吗?

1 个答案:

答案 0 :(得分:2)

不,它不需要是volatile。但是TaskLock ()必须施加某种内存屏障以确保按顺序执行操作,即首先锁定,然后加载initCount。可能你的锁定原语已经这样做了。


Volatile: Almost Useless for Multi-Threaded Programming