我有一個關於一行爲我不太明白問題: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