WEB开发网
开发学院软件开发VC 理解 COM 套间 阅读

理解 COM 套间

 2006-07-22 22:58:03 来源:WEB开发网   
核心提示: 如何解决这个问题呢?我们需要利用同步机制来控制我们的多线程程序,现在我们使用临界区来解决这个问题,理解 COM 套间(5),代码如下:(在Code的MultiThreading中将进入临界区和离开临界区的代码前的注释去掉就可以了)#include <iostream>#incl

如何解决这个问题呢?我们需要利用同步机制来控制我们的多线程程序,现在我们使用临界区来解决这个问题。代码如下:(在Code的MultiThreading中将进入临界区和离开临界区的代码前的注释去掉就可以了)

#include <iostream>
  #include <windows.h>
  
  int g_i = 10; //一个全局变量
  
  CRITICAL_SECTION cs; //一个临界区变量
  
  DWORD WINAPI ThreadProc(LPVOID lpv)
  {
    EnterCriticalSection(&cs); //进入临界区
  
    g_i += 10;
    std::cout <<"In the Thread " << ::GetCurrentThreadId() << ",the first g_i is " << g_i << "!" << std::endl;
    ::LeaveCriticalSection(&cs);
    Sleep(5000); //睡眠
    EnterCriticalSection(&cs);
    g_i += 10;
    std::cout <<"In the Thread " << ::GetCurrentThreadId() << ",the secend g_i is " << g_i << "!" << std::endl;
    ::LeaveCriticalSection(&cs);
    return 0;
  }
  
  int main(int argc, char* argv[])
  {
    
    DWORD threadID[2];
    HANDLE hThreads[2];
    InitializeCriticalSection(&cs);
    for(int i = 0; i <= 1; i++ )      //创建两个线程
        hThreads[i] = ::CreateThread(NULL,
          0,
          ThreadProc,
          NULL,
          0,
          &threadID[i]);
  
    WaitForMultipleObjects(2,hThreads,TRUE,INFINITE);  //等待线程结束
    for(i = 0; i <= 1; i++ )
      ::CloseHandle(hThreads[i]);        //关闭线程句柄
    
    system("pause");
    return 0;
  }
  再次运行,结果就是我们所需要的了。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:理解 COM 套间

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接