[基础有关问题]:为什么这么做临界区不行呢

[基础问题]:为什么这么做临界区不行呢?
long   int   TimesFlags=0;//标记时间,做临界区保护TimesFlags
辅助线程A:
{
                  ...
      EnterCriticalSection(&g_cs_TimeFlags);//进入临界区
++TimesFlags; //时间标志++
FileData[0]=TimesFlags; //时间标志
LeaveCriticalSection(&g_cs_TimeFlags);
                  ...//处理过程,用FileData【0】代替TimesFlags处理
                        //类似cout < <FileData【0】的操作
}
辅助线程B:
{
                  ...
EnterCriticalSection(&g_cs_TimeFlags);//进入临界区
++TimesFlags; //时间标志++
double   fdata=(double)TimesFlags;
LeaveCriticalSection(&g_cs_TimeFlags);
                  ...//处理过程2,以fdata代替TimesFlags处理,类似于cout < <fdata的操作
}
TimesFlags的递增结果却是:
1
2
4   //应该为3
4
5
6
7
9   //应该为8
9
10
。。。
不知道为什么会这样呢,这样做临界区不对吗?



------解决方案--------------------
对TimesFlags的操作是被保护起来了,可是你在显示的时候是怎么做的?
------解决方案--------------------
贴出你的输出代码。