1.问题的出现
在编写TCP客户端时,如果用一个线程发送数据,一个线程接收数据,那么如何同步登录结果是一个麻烦的事情(在进行任何操作之前必须先登录),因为登录的时候需要考虑三件事情:
(1)接收数据和发送数据不在同一个线程,如何同步
(2)第一件是tcp本身可能会分包
(3)第二件事情,不能保证你发出去的包一定会有回复,所以应当有一个超时
2.问题解决
利用c++11的condition_variable编写一个同步类,利用其wait_for的函数实现等待并支持超时,在处理完分包之后使用notity_all函数实现同步。