2012-04-20 3 views
1

스레드를 만드는 클래스의 인스턴스를 여러 개 인스턴스화합니다. 스레드는 정적이므로 개체의 인스턴스가 서로의 스레드 작업을 방해합니까?스레드를 만드는 클래스의 여러 인스턴스를 인스턴스화하는 중 ... ...?

이상하게도 2 개의 다른 파형을보고 두 개의 다른 슬립 지연에서 실행됩니다. ??? 그래서 이것은 두 개의 다른 스레드가 있다는 것을 의미합니까 ??? 헤더 파일에서

void CWaveGeneration::CreateWave() 
{ 

    Y = new double[numPoints]; 
    X = new double[numPoints]; 
    I = new int[numPoints]; 


    CWaveGeneration *pp = this; 
    hThread_Wave = CreateThread(NULL, 0, Thread_Wave, pp, 0, NULL); 
    //within the thread, there is the setting of Sleep(iSleep); 
} 


void CWaveGeneration::CreateWave(int _waveType, double _A, double _w, double _T, double _r, int _numPoints, int _iSleep) 
{ 
    waveType = _waveType; 
    A = _A; 
    w = _w; 
    T = _T; 
    r = _r; 
    numPoints = _numPoints; 
    iSleep = _iSleep; 

    CreateWave(); 
} 


DWORD WINAPI CWaveGeneration::Thread_Wave(LPVOID iValue) 
{ 
    CWaveGeneration *p = (CWaveGeneration*)iValue; 
    switch (p->waveType) 
    { 
    case 0: 
     p->Sine(); 
     break; 
    case 1: 
     p->Square(); 
     break; 
    case 2: 
    // p->Triangle(); 
     break; 
    case 3: 
    // p->SawTooth(); 
     break; 
    } 

    return true; 
} 

는 :

static DWORD WINAPI Thread_Wave(LPVOID iValue); 

wave1 = new CWaveGeneration(); 
    wave1->CreateWave(0,100,10,0,0,200, 10); 

    wave2 = new CWaveGeneration(); 
    wave2->CreateWave(1,80,5,0,0,200, 100); 

    // in total, are there 1 thread or 2 threads created here ??? 
+0

코드를 제공해 주시겠습니까? – Jagannath

+0

"스레드는 고정적입니까"라는 것은 무엇을 의미합니까? 대부분의 시스템 (그리고 C++ 스레드 모델을 지원하는 시스템)에서는 원하는대로 생성하고 파괴 할 수 있습니다. –

+0

일부 코드를 추가했습니다 – jdl

답변

0

클래스에서 스레드 객체가 정적 인 경우에, 당신은 모든 인스턴스에 대해 하나의 스레드 만이있을 것이다 클래스.
클래스의 스레드 개체가 정적이 아니면 클래스의 각 인스턴스에 1 개의 스레드 개체가 있습니다.이 문제는 없어야합니다.

+0

일부 코드를 추가했습니다. – jdl

관련 문제