c++最基础的函数调用问题,为什么我在这里会卡住呢?

pydjango 2019-12-08 12:21:38
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

...全文
127 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2019-12-08
  • 打赏
  • 举报
回复
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; // 这里永远是return false;后面都不执行了。 应该是if() { cout<<...; return false; } 吧

bool aaa = Server::listen_internal();
std::cout<<"1584:"<< aaa <<std::endl;
return aaa;
}

65,203

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧