![](/img/trans.png)
[英]threads are halted by function send() or recv() of ACE_SOCK_Stream?
[英]Using WaitForMultipleObjects() with ACE_SOCK_Stream - get event only when there's data
是否可以将WaitForMultipleObjects()与ACE_SOCK_Stream一起使用,并使其仅在有要读取的数据时才返回?
我试图遵循:
// set some params
DWORD handlesCount = 1;
DWORD timeoutMs = 5 * 1000;
HANDLE* handles = new HANDLE[handlesCount];
handles[0] = sock_stream.get_handle();
while (true) {
int ret = WaitForMultipleObjects(handlesCount, handles, false, timeoutMs);
std::cout << "Result: " << ret << std::endl;
但是WaitForMultipleObjects()立即返回套接字流索引,表明套接字流已就绪(在无穷循环中打印0)。
通过ACE_SOCK_Acceptor
(ACE_SOCK_Acceptor-> accept())接受套接字。
如何让WaitForMultipleObjects()等待套接字读取数据?
套筒手柄不适用于WFMO。 您应使用WSAEventSelect将所需事件与在WFMO中注册的事件句柄相关联。
由于您也熟悉ACE,因此可以检查ace / WFMO_Reactor.cpp,register_handler()方法的源代码,以查看用例及其在WFMO中的工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.