麻烦与线程

时间:2013-06-26 09:38:39

标签: c++ multithreading memory

早上好,

我试图使用单个线程创建一个非常简单的应用程序,它只是更改对象变量的值,然后在屏幕上打印它。所以现在每当我运行程序时,线程都会被正确初始化,但它会为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;
}

1 个答案:

答案 0 :(得分:3)

您正在将object **传递给该帖子,但将其视为object *

您不需要

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