我有一个关于一行为我不太明白问题:C++传递对象给一个线程
我有C++代码两个变化:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) clientThread, (LPVOID) connectionSocket, 0, NULL);
螺纹:
Client a;
a.clientsocket = connectionSocket;
a.testText()
a.sendSocket();
工作得很好(sendSocket发送一些测试数据到套接字)。
但是,如果我这样做
Client a;
a.clientsocket = connectionSocket;
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) clientThread, (LPVOID) &a, 0, NULL);
,并使用 螺纹:
a.testText();
a.sendSocket();
仅testText()的作品。
我有点困惑,这是为什么。我对C++的一个业余爱好者,虽然:-)
编辑:
添加客户端类:
class Client
{
public:
SOCKET clientsocket;
Client()
{
}
~Client(){}
void displayMessage()
{
std::cout << "test message client class" << std::endl;
}
int sendSocket()
{
char *sendbuf = "CLIENT TEST";
send(clientsocket, sendbuf, (int)strlen(sendbuf),0);
closesocket(clientsocket);
return 0;
}
};
当你第二次调用'a.sendSocket()'时会发生什么?有某种例外或某种东西?应用程序崩溃了吗? – Kiril 2012-04-16 18:24:24
no不会崩溃,它只是不会向connectionSocket发送数据。 a.clientsSocket – user912877 2012-04-16 18:44:28
调试器中的'a.clientSocket'看起来如何?它仍然有效吗? – Kiril 2012-04-16 18:46:51