![](/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.