如题!能否给出一个简单的例子表示.谢谢!

解决方案 »

  1.   

    采用同步对象。
    <Windows核心编程>
      

  2.   

    比如,Handle mutex;
    void Thread(PVOID pvoid)
    {
         while(bGoing)
         {
               WaitForSingleObject(mutex);
               ...do someting.....
               ReleaseMutex(mutex);
         }
    }
      

  3.   

    线程的同步和互斥有多个办法,临界区,信号量,互斥体,事件等,看你的不同要求了
    这些在MFC中都有相应的封装类,CMutex CEvent等
    看看候捷的Win32多线程程序设计,比较好
      

  4.   

    一个临界区的例子,其他的类似
    // 临界区结构对象
    CRITICAL_SECTION g_cs;
    // 共享资源 
    char g_cArray[10];
    UINT ThreadProc10(LPVOID pParam)
    {
     // 进入临界区
     EnterCriticalSection(&g_cs);
     // 对共享资源进行写入操作
     for (int i = 0; i < 10; i++)
     {
      g_cArray[i] = 'a';
      Sleep(1);
     }
     // 离开临界区
     LeaveCriticalSection(&g_cs);
     return 0;
    }
    UINT ThreadProc11(LPVOID pParam)
    {
     // 进入临界区
     EnterCriticalSection(&g_cs);
     // 对共享资源进行写入操作
     for (int i = 0; i < 10; i++)
     {
      g_cArray[10 - i - 1] = 'b';
      Sleep(1);
     }
     // 离开临界区
     LeaveCriticalSection(&g_cs);
     return 0;
    }
    ……
    void CSample08View::OnCriticalSection() 
    {
     // 初始化临界区
     InitializeCriticalSection(&g_cs);
     // 启动线程
     AfxBeginThread(ThreadProc10, NULL);
     AfxBeginThread(ThreadProc11, NULL);
     // 等待计算完毕
     Sleep(300);
     // 报告计算结果
     CString sResult = CString(g_cArray);
     AfxMessageBox(sResult);
    }
      

  5.   

    I agree with xxqfperfect(勇仔), you should spend some time on Operate System.
     First, you get the basic idea about the synchcronization and mutex. 
     Second, you find some demo. Search key, such as"CreateMutex, CreateSemaphore, CreateEvent".
     Eventually, write code by yourself.