huster-mr
huster-mr
博主,我看完你的这个项目后,想实验测试下。但是遇到些问题,希望帮忙解答下,十分感谢!首先,为什么我运行webserver可执行文件时,报set socket non block failed: Bad file descriptor?然后我将程序中server构造函数的中setSocketNonBlocking部分屏蔽掉后,重新运行就一直打印epoll wait error:Invaild argument.
程序加锁的问题
下面这两个函数,第一个函数加锁后,然后一直等待条件变量。第二个函数执行时,由于第一个函数占用了锁,所以根本无法给loop_变量赋值以及唤醒条件变量,所以这样是不是会造成死锁。但是程序的确又是在正常运行,所以比较困惑,求指教。 EventLoop* EventLoopThread::startLoop() { assert(!thread_.started()); thread_.start(); { MutexLockGuard lock(mutex_); while (loop_ == NULL) cond_.wait(); } return loop_; } void EventLoopThread::threadFunc() { EventLoop loop; { MutexLockGuard lock(mutex_); loop_ = &loop; cond_.notify();...