限制c ++中的函数调用的最佳方法是什么?
我有一个从Web服务器到某个功能的异步请求。问题是,如果请求率很高(该函数在其他函数完成之前将被多次调用),则程序将崩溃。我想将其限制为一定数量,方法是先将请求存储在队列中,然后队列将管理对该函数的调用。
我已经创建了两个类,RQServer和RQClient。
rqueue.h
class RQServer {
public:
RQServer();
std::queue<Request> *getQueue();
private:
std::queue<Request> _requests;
};
class RQClient {
public:
RQClient();
bool connect(RQServer server);
bool push(Request req);
private:
std::queue<Requst> *_requests;
};
rqueue.cpp
#include "rqueue.h"
RQServer::RQServer(){}
std::queue<Request> *RQServer::getQueue(){
return &_requests;
}
RQClient::RQClient(){}
RQClient::connect(RQServer server){
_requests = server.getQueue();
}
RQClient::push(Request req){
_requests -> push(req);
}
一种明显的方法是创建方法RQServer::run()
,该方法根据对函数的允许的异步调用(例如,我设置了limit
变量)来创建线程,并且每个线程将始终检查队列。问题是limit
是数百个时。
答案 0 :(得分:0)
缺少MCVe时,请说您是这样开始的。
绝对不要创建新线程来服务新请求。拥有队列的全部目的是将工作线程与接收方断开,并吸收所有瞬态。