嗯..我使用epoll+multithread的典型模型来处理海量socket,也就是我有一个线程叫做epollWorkThread,它使用epoll_wait来处理i/o socket。虽然有 EPOLLIN 事件,但 recv() 会完成工作,我确实使用无阻塞模式来允许立即返回。而 recv() 确实处于 while(true) 循环中。在最初的时间里一切都很好(可能是几个小时或几分钟,或者如果我很幸运的话),我可以收到信息。但一段时间后,recv() 坚持返回 -1 并带有 errno = 107(ENOTCONN)。传输的另一个对等体写入 AS3,以确保套接字已连接。所以我对 recv() 行为感到困惑。在此先感谢您,并感谢您的任何评论!
我正在阅读"用C++思考",我对新操作员感到困惑.这是本书的代码:
//: C13:ArrayOperatorNew.cpp
// Operator new for arrays
#include <new> // Size_t definition
#include <fstream>
using namespace std;
ofstream trace("ArrayOperatorNew.out");
class Widget
{
enum { sz = 10 };
int i[sz];
public:
Widget() { trace << "*"; }
~Widget() { trace << "~"; }
void* operator new(size_t sz)
{
trace << "Widget::new: "
<< sz << " bytes" << endl;
return ::new char[sz];
}
void operator delete(void* p)
{
trace << "Widget::delete" << endl;
::delete []p;
}
void* operator new[](size_t …Run Code Online (Sandbox Code Playgroud)