请问有无办法cancel一个进行中的block的操作 例如,我在线程A中调用recv一个socket,由于没有数据到达而阻塞在那里,在另外一个线程B中想使A线程中的recv操作立即返回,有没有什么办法可以实现?(不关闭这个socket) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 recv很难解决这个问题还是用WSARecv吧OVERLAPPED ov;memset (&ov, 0, sizeof (ov));ov.hEvent = CreateEvent (....);WSABUF wsa = { buflen, buf };WSARecv (s, &wsa, 1, &recv_bytes, &flags, &ov, NULL);HANDLE evts [2];evts [0] = ov.hEvent;evts [1] = global_evt_for_socket_s;DWORD ret = WaitForMultipleObjects (2, evt, FALSE, INFINITE);if (ret == WAIT_OBJECT_0){ // recv 到数据了}else if (ret == WAIT_OBJECT_0 + 1){ // 某个线程请求...};然后另外一个线程中可以SetEvent (global_evt_for_socket_s);这样就可以让WaitForMultipleObjects不在等待了如果想知道更多的信息,请在msdn中查WSARecv 使用VC查看代码的问题 WDK内核模式下,有没让线程休眠的函数? 需要电子书的进来,要多少有多少。 ——*- ComboBox的选项是否可以存取? -*—— 在线等待,马上结贴。¥¥¥¥¥高分求教一个vc 6.0链接错误。¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ vc中的DBGrid控件为什么只有两列?如何加其他的列? 小问题!大送分!! 100分询问如何解autocad vba的密码! 多线程编程,程序出现死循环(程序一直运行无法关闭,用API实现的) 请问高手高手之高高手? 流文件有关 CPoint类是什么东西?
memset (&ov, 0, sizeof (ov));
ov.hEvent = CreateEvent (....);WSABUF wsa = { buflen, buf };
WSARecv (s, &wsa, 1, &recv_bytes, &flags, &ov, NULL);
HANDLE evts [2];
evts [0] = ov.hEvent;
evts [1] = global_evt_for_socket_s;
DWORD ret = WaitForMultipleObjects (2, evt, FALSE, INFINITE);if (ret == WAIT_OBJECT_0)
{
// recv 到数据了
}
else if (ret == WAIT_OBJECT_0 + 1)
{
// 某个线程请求...
};然后另外一个线程中
可以SetEvent (global_evt_for_socket_s);
这样就可以让WaitForMultipleObjects不在等待了如果想知道更多的信息,请在msdn中查WSARecv