线程的问题(300分)

  • 主题发起人 主题发起人 yijin
  • 开始时间 开始时间
Y

yijin

Unregistered / Unconfirmed
GUEST, unregistred user!
在c++builder下,如果在一个线程里面产生一个socket,当这个线程挂起的时候(例如调用waitfor),那这个socket的onread,onwrite事件还生效吗?
 
事件还是有效的,但是挂起之后,事件应该不会触发了。
 
完全有效
 
我想在一个线程里面产生一个socket,这个socket应当是再开始了一个线程,也就是说这个
socket是独立于产生它的线程的,因此,当产生它的线程挂起时,并不影响socket的读写
上面是我自己的个人意思,不知对不对,请指教!
 
同意windbell兄的方法,
在主线程中监听,有连接请求就新建一个线程来处理。
 
试了一下,即使线程执行完毕,用netstat -a 查看,连接仍然在的。
我还想请问一下,如何定义这个生成socket的onacept、onread之类的事件呢?
 
本来在线程模式下,onread就没有效果了!!!
 
__fastcall testthread::testthread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall testthread::Execute()
{
Form1->Label1->Caption="hello";
c1=new TServerSocket(0);
c1->Port=31977;
c1->Active =true;
c1->OnAccept=ServerSocketAccept;
Sleep(20000);
//---- Place thread code here ----
}
//---------------------------------------------------------------------------
void __fastcall testthread::ServerSocketAccept(TObject *Sender,
TCustomWinSocket *Socket)
{
Form1->Label1->Caption ="accept";
}

又继续做了第二次实验,连接是存在的,就是不能调用onaccept,莫非真的验证了无忌兄的观点?
 
多人接受答案了。
 
后退
顶部