c++最基础的函数调用问题,为什么我在这里会卡住呢?
inline bool Server::listen(const char* host, int port, int socket_flags) //服务器监听,从这里开始执行
{
int bbb = bind_internal(host, port, socket_flags);
std::cout<<"1580:"<< bbb <<std::endl;
if ( bbb < 0)
std::cout<<"1580:false"<<std::endl;
return false;
bool aaa = Server::listen_internal();
std::cout<<"1584:"<< aaa <<std::endl;
return aaa;
}
in line bool Server::listen_internal()
{
auto ret = true;
is_running_ = true;
std::cout << "1756:for" << std::endl;
for (;;) {
auto val = detail::select_read(svr_sock_, 0, 100000); //474
std::cout << "1756:" << val << std::endl;
if (val == 0) { // Timeout
if (svr_sock_ == INVALID_SOCKET) {
// The server socket was closed by 'stop' method.
std::cout << "1760:close"<< std::endl;
break;
}
continue;
}
socket_t sock = accept(svr_sock_, NULL, NULL); //接收客户端请求
std::cout << "1758:" << sock << std::endl;
if (sock == INVALID_SOCKET) {
if (svr_sock_ != INVALID_SOCKET) {
detail::close_socket(svr_sock_); //关闭socket
ret = false;
}
else {
; // The server socket was closed by user.
}
break;
}
// TODO: Use thread pool...
std::thread([=]() {
{
std::lock_guard<std::mutex> guard(running_threads_mutex_); //lock_gurd:对线程加锁
running_threads_++;
}
read_and_close_socket(sock);
{
std::lock_guard<std::mutex> guard(running_threads_mutex_);
running_threads_--;
}
}).detach();
}
由于是小白,程序中我加了很多输出,我在linux下,进行运行,输出如下,一直卡在这里,不知道为什么阻塞在这里呢?!急求啊
root@jack-All-Series:/home/jack/src# ./360server10_13 /home/jack/360transitions/dashtile
www directory: /home/jack/360transitions/dashtile
Listening on port 80
1713:4port:80
1580:80