2012-04-20 25 views
1

スレッドを作成するクラスのインスタンスを複数インスタンス化しています。スレッドは静的なので、オブジェクトのインスタンスはお互いのスレッド操作を妨害しますか?スレッドを作成するクラスのインスタンスを複数インスタンス化する...?

奇妙なことに、2つの異なる波形と2つの異なるスリープ遅延で動作しています。 ???これは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つだけのスレッドを持っていますクラス。
クラス内のスレッドオブジェクトが静的でない場合、クラスの各インスタンスは1つのスレッドオブジェクトを持ちます。これは問題ありません。

+0

私はいくつかのコードを追加しました – jdl

関連する問題