1

みんな、おはよう、

私は、オブジェクトの変数の値を変更して画面に表示するだけの、単一のスレッドで非常に単純なアプリケーションを作成しようとしていました。そのため、プログラムを実行するたびに、スレッドは正しく初期化されますが、 のガベージ値が返されobject->aます。

どうすればこれを機能させることができるかについて、いくつかの指針を教えてください。

どうもありがとう。アレックス

HANDLE hPrintMutex;
int ThreadNr;

class object
{
    public:
        int a;
        object(void);
};

object::object(void)
{
    a=1;
}


void printNumber(void * arg)
{
    object * x=(object*) arg;
    std::cout<<"Thread1 -> "<< x->a<<"\n";;
    while(x->a<10)
    {
        WaitForSingleObject(hPrintMutex,INFINITE);
        x->a=5;
        ReleaseMutex(hPrintMutex);
    }
}

int main()
{
    object * Object; 
    Object = new object;

    hPrintMutex=CreateMutex(NULL,false,NULL);
    std::cout << "Main -> "<<Object->a<<"\n";

    HANDLE hThread1=(HANDLE)_beginthread(printNumber,0,&Object);

    WaitForSingleObject(hThread1,INFINITE);
    return 0;
}
4

1 に答える 1

3

object **あなたはスレッドに渡していますが、それをobject *

&インは必要ありません

HANDLE hThread1=(HANDLE)_beginthread(printNumber,0,&Object);
                                                   ^
于 2013-06-26T09:42:11.917 に答える