最近想封装一下WsaEventSelect模型来方便编程,有个大概的想法,不知道有没有问题
class MyClass
{
public :
void Init(....);
void Open(....);
virtual OnListen(...);
virtual OnRead(...);
Virtual OnWrite(....);
Virtual OnError(....);private:
ThreadPooc(.....)
{
//启动线程,不停的执行WsaEventSelect ,来获取Socket上的事件
if(Event==FD_Read)
{
SaveToBuffer();//将数据存入缓冲区后
OnRead();//通知从缓冲区接收到数据
}。。
}
使用的时候重载OnRead,onWrite函数。现在我想问个问题:在线程中,当事件触发后,线程函数调用类的函数OnAccept,在执行过程中,线程应该是阻塞在哪里的吧,这样是不是就在主线程中执行了呢?就不用考虑临界区问题了呢?
class MyClass
{
public :
void Init(....);
void Open(....);
virtual OnListen(...);
virtual OnRead(...);
Virtual OnWrite(....);
Virtual OnError(....);private:
ThreadPooc(.....)
{
//启动线程,不停的执行WsaEventSelect ,来获取Socket上的事件
if(Event==FD_Read)
{
SaveToBuffer();//将数据存入缓冲区后
OnRead();//通知从缓冲区接收到数据
}。。
}
使用的时候重载OnRead,onWrite函数。现在我想问个问题:在线程中,当事件触发后,线程函数调用类的函数OnAccept,在执行过程中,线程应该是阻塞在哪里的吧,这样是不是就在主线程中执行了呢?就不用考虑临界区问题了呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货