1

私はマルチスレッド システムで作業しています。コード クラスのデモは .h ファイルで定義されています。

main 関数からのループが 2 回目に実行されると、下の COMMENT1 は前の値を取ります

ハンドルを閉じてもスレッドは閉じませんか?

int threadentry(void* data)
{
   demo* inst=(demo*) data;
   cout << "Value of inst  "<<hex << &inst<< endl;
   string request;
   cin>>request;
   if(request==play)
   {
      inst->play;  
      cout << "Value of inst  "<<hex << &inst<< endl;
      // COMMENT1 here when the thread is executed second time from the main it is taking previous value
   }
}

int main()
{
   while(1)
   {
      demo* inst=new demo();
      cout << "Value of inst  "<<hex << &inst<< endl;  //value is coming different from above
      HANDLE threads;
      DWORD threadId1;
      if ((threads = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadentry,
         (void *)inst, 0, &threadId1)) == NULL)
        return -1;
      //here is some Processing of data and after processing I close the handle
      CloseHandle(threads);
      delete inst;
      system("pause");
   }
}
4

2 に答える 2