我对一个我不太了解的行为有疑问:
我有两种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++的业余爱好者:-)
编辑:
添加了Client类:
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;
}
};
最佳答案
Anon可能在某些方面超出了正确的轨道,但我认为这是connectionSocket
。但是,当您说a.sendSocket()
不起作用时,您将必须提供更多详细信息。应用程序崩溃了吗?你有异常(exception)吗?该应用程序是否可以继续工作,但是sendSocket()
调用并未导致实际发送内容? 实际问题是什么?
关于c++ - C++将对象传递给线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10179357/