我最近一直在阅读很多关于 C++ 的内容,但没有出现一件事。我最终找到了自己的解决方案,但我不确定它是否正确。所以我问是否有比这更好的方法。从我在 C++11 中读到的内容来看,启动一个线程是一项简单的工作,实际上我并没有发现它那么难。然后我试图在黑暗中提高我的知识,所以我决定“把类变成线程”(如果这有意义的话)。基本上我会有一个类,它会做自己的事情,不受主程序的影响。这是一些指导您完成的代码
套接字服务器.h
#ifndef SOCKETSERVER_H
#define SOCKETSERVER_H
#include <string>
#include <boost\asio.hpp>
class SocketServer
{
public:
SocketServer(std::string ip_address, unsigned short port);
~SocketServer();
void Read();
//bool isValidIP(const char* ip_address);
private:
boost::asio::io_service io_service;
std::string listenIP;
unsigned short listenPort;
void BeginListen();
};
#endif;
现在在我的 main() 函数中,每当我尝试
std::thread socketServerThread(SocketServer, listenIP, listenPort);
它总是在我的脸上爆炸。但是如果我有那个结构
void InitSocketServer(std::string listenIP, unsigned short listenPort)
{
SocketServer* c = new SocketServer(listenIP, listenPort);
}
我把它放在带有参数的线程构造函数中,它突然起作用了。对我个人而言,这是凌乱的代码,我想知道是否有更好的方法来实现同样的目标。先感谢您