【发布时间】:2021-03-18 03:00:07
【问题描述】:
我有客户端类:
class Client
{
std::vector<char> buffer;
//actually these are asio socket and waitable_timer but that's beside the point
Socket socket;
Timer timer;
public:
void send_request(std::string req); //sends request in new thread and immediately returns
};
如果我没记错的话,buffer、socket和timer是线程间共享的。现在我希望 socket 和 buffer 在线程之间共享,以便它们共享连接并读入同一个缓冲区。但我希望每个线程都有自己的定时器。有没有比在 send_request(std::string) 函数中本地创建计时器更好的方法,然后通过参数将其传递给其他函数(由 send_request 调用的函数) ?请注意,我可以在每个函数中创建新的计时器,然后在最后销毁它(因为每个函数都设置截止日期,读取数据并调用另一个函数,该函数设置独立于前一个截止日期的新截止日期)但是使用 asio 我无法让它运行几个小时后,我也没有看到它以这种方式使用过,所以认为这不是一种选择。
【问题讨论】:
标签: c++ multithreading tcpclient