现在我有一个线程处理函数:
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
static int i=0;
         while(TRUE)
         { 
              i++;
         }
}现在创建两个线程,第一个线程运行时可能对 i的值作了修改,第二个线程运行实现要求i必须时原始值,即是0,(两个线程不是同时创建的),请问怎么实现?是不是有线程内的静态变量?

解决方案 »

  1.   

    在App中定义i
    再把App的指针传给线程
    lpParameter->i;当然也可以用全部变量
    还有要注意线程同步
      

  2.   

    InterlockedExchange()希望这个函数对你有用
      

  3.   

    放在一个结构里,将结构指针传入线程:
    struct THREAD_DATA
    {
        long  ..
        DWORD ....
        LPVOID* lplp;
        ...};
    THREAD_DATA* pData = new THREAD_DATA;
    // 初始化结构
    pData->... AfxBeginThread(ThreadFnc, (LPVOID) pData);..
    DWORD WINAPI ThreadProc(LPVOID lp)
    {
        THREAD_DATA* pData = (THREAD_DATA*)lp;    ...
        while(pData->...)
        {
        }
        return 0;
    }
      

  4.   

    __declspec(thread) static int n;
      

  5.   

    楼上的,现成本地存储器tls每个线程都有自己的n