0

在寻找一个实现 Web 服务器的 C 库后,我学习了 Mongoose。实际上,我已经通过几个示例使其工作,这些示例调用了实际处理传入和传出数据的回调函数。我在 Windows 上使用,使用 Visual Studio 2008 进行编译和调试。

我称它为会话,它如下:

int CHttpsCom::Session( void )
{

  struct mg_context *ctx;

  const char *options[] = {
    "listening_ports", "443s",
#ifdef _DEBUG
    "ssl_certificate", "c:\\temp\\cert.pem",
#else
    "ssl_certificate", "cert.pem",
#endif
    NULL
  };

  ctx = mg_start( &callback, NULL, options );

  if( !ctx )
    return 1;

  //getchar();  // Wait until user hits "enter"
  while ( LeaveIt == false );

  Sleep(3500);// without this it won't work

  mg_stop( ctx ); 

  return 0;

}

100% 的示例我注意到大多数示例使用 getchar 将会话结束与回调执行结束同步。我在收到一条消息后设置了这个 LeaveIt 标志。如果我不使用上面的 Sleep,我会在库内部出现死锁。有没有更好的方法来处理这个等待回调结束?

谢谢。

4

1 回答 1

1

代替

while ( LeaveIt == false );

Sleep(3500);// without this it won't work

这样(在最坏的情况下,您将节省 CPU 消耗):

while (!LeaveIt)
{
    Sleep(500);
}
于 2012-10-03T19:54:15.517 回答