一般的服务器的实现都是采用多线程方式,即每个连接都是一个线程,看起来就象:
主线程:
while(1)
{
ClientSock = accetp(....);
AfxBeginThread(..., ClientSock);
}我不想来一个连接就开一个线程,我想用select,但select需要将accept得到的socket加入读写集合中,怎么加?
也就是说主线程阻塞在accpet,副线程阻塞在select,当一个连接到达时,主线程能否动态将socket加到集合中去?是否需要互斥?
谢谢
主线程:
while(1)
{
ClientSock = accetp(....);
AfxBeginThread(..., ClientSock);
}我不想来一个连接就开一个线程,我想用select,但select需要将accept得到的socket加入读写集合中,怎么加?
也就是说主线程阻塞在accpet,副线程阻塞在select,当一个连接到达时,主线程能否动态将socket加到集合中去?是否需要互斥?
谢谢
根据我的经验。
主线程中getpeername获取名称,看是谁连接了,把计算机名称或者ip传给辅线程。要不就在主线程中开一个ptrlist类专门保存辅线程的指针。链表可以加减都行。好像很容易控制啊