C++ Builder多线程的问题。
我是打算这么设计的:
1 在主文件中,我使用了一个控件TServerSocket,为这个控件填了一堆的事件。
[code=c]
//主文件的一些主要操作
void __fastcall TServer::FormCreate(TObject *Sender)
{
server=new ServerThread(true,ServerSocket1);//server是一个主窗体的成员变量,类型为ServerThread
server->Resume();//启动这个线程
//sessions=0;
}
[code]
2 我在线程文件中,写了一个线程类,在这个线程类中,有一个成员变量TServerSocket。
[code=c]
//线程类的头文件
class ServerThread : public TThread
{
private:
protected:
void __fastcall Execute();
public:
__fastcall ServerThread(bool CreateSuspended,TServerSocket* myserver);
TServerSocket* server;
};
[code]
[code=c]
//多线程类的实现文件
__fastcall ServerThread::ServerThread(bool CreateSuspended,TServerSocket* myserver)
: TThread(CreateSuspended)
{
server=myserver;
}
//---------------------------------------
void __fastcall ServerThread::Execute()
{
server->Open();//---- Place thread code here ----
}
[code]
我在想,我这样的设计应该是没有问题的吧。
但是我有个顾虑,就是多线程里的Execute()。我担心这个线程只会负责server的Open()操作。并不会来响应我在主文件中,TServerSocket 控件的一些事件响应。
换句话说,就是我担心,我为TServerSocket填的一些事件代码,会不会出现不执行的情况。。
[解决办法]
TServerSocket设置的事情是以异步的方式的响应的,如果参数设置正确,并且正确设置了事件,当有客户端连接或者是数据发送时,就会进入相应的事件函数中的。和线程本身执行的函数没有冲突的。