多线程之间的共享数据需要有互斥对象或者其他措施保护,而普通定时器Timer也是并发执行的程序段,但未曾见过类似的保护。我想问多媒体定时器是基于多线程的,他与其他线程的共享数据是否需要保护同时访问。

解决方案 »

  1.   

    Timer is not "并发执行",it post WM_TIMER message to message loop which dispatch
    message to window procedure in order。
      

  2.   

    CCriticalSection g_cs
    int g_nCount;//shared variables
    void func()
    {
      g_cs.Lock();
      g_nCount++;
      g_cs.UnLock();
    }
      

  3.   

    WhiteWaterBlueSky(花之雨) 说的很有道理。我懂了普通定时器的机理了,但不知道基于线程的多媒体定时器是否需要共享数据的保护。(MultimediaTimer)