Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+;中的简单多线程服务器+;?_C++_Sockets_Client Server - Fatal编程技术网

C++ C+;中的简单多线程服务器+;?

C++ C+;中的简单多线程服务器+;?,c++,sockets,client-server,C++,Sockets,Client Server,我想编写一个简单的服务器应用程序,它将从客户机应用程序接收命令,并在单独的线程中运行这些命令 我在看电视。有人有使用这个的经验吗?它与使用Boost的Asio相比如何 我会尝试一开始不使用线程。我会先说。您会发现libevent模型非常简单和简单。如果libevent不能处理您的用例,那么总会有Erlang 异步I/O在很多方面都比每客户端线程模型好。最佳性能实际上是通过每个核心的线程来实现的,每个线程执行异步I/O 请注意,您的“多线程服务器”概念虽然并没有完全错误,但与其他人使用该短语

我想编写一个简单的服务器应用程序,它将从客户机应用程序接收命令,并在单独的线程中运行这些命令

我在看电视。有人有使用这个的经验吗?它与使用Boost的Asio相比如何


我会尝试一开始不使用线程。我会先说。您会发现libevent模型非常简单和简单。如果libevent不能处理您的用例,那么总会有Erlang

异步I/O在很多方面都比每客户端线程模型好。最佳性能实际上是通过每个核心的线程来实现的,每个线程执行异步I/O

请注意,您的“多线程服务器”概念虽然并没有完全错误,但与其他人使用该短语的意思大不相同。通常,它意味着每个连接一个线程,而不是对跨线程并行的一个连接的响应


您所要求的示例只是单线程同步服务器+并行计算的组合。

Boost Asio将很容易做到这一点。看一看,它展示了如何将Boost用于具有多线程的异步输入/输出

#include <boost/asio.hpp> 
#include <boost/thread.hpp> 
#include <iostream> 

void handler1(const boost::system::error_code &ec) 
{ 
  std::cout << "5 s." << std::endl; 
} 

void handler2(const boost::system::error_code &ec) 
{ 
  std::cout << "5 s." << std::endl; 
} 

boost::asio::io_service io_service; 

void run() 
{ 
  io_service.run(); 
} 

int main() 
{ 
  boost::asio::deadline_timer timer1(io_service, boost::posix_time::seconds(5)); 
  timer1.async_wait(handler1); 
  boost::asio::deadline_timer timer2(io_service, boost::posix_time::seconds(5)); 
  timer2.async_wait(handler2); 
  boost::thread thread1(run); 
  boost::thread thread2(run); 
  thread1.join(); 
  thread2.join(); 
}
#包括
#包括
#包括
void handler1(const boost::system::error\u code&ec)
{ 

Asio非常适合这种单线程到多客户端的工作类型。