Skip to content

Latest commit

 

History

History
80 lines (30 loc) · 1.88 KB

QA.md

File metadata and controls

80 lines (30 loc) · 1.88 KB

遇到的问题

Q: TCP 三次握手完成后,客户端迟迟不发送请求,那服务端保持连接多久呢?如果立即释放连接,说不定客户端请求已经在路上了。如果不释放,服务端又一直干等着,就会浪费内存资源。

A:

Q: 类文件相互 include?

A: 这种类依赖关系是不好的,应避免这种设计。正确的类依赖关系应该是像一颗树那样,具有层次关系。

Q: 多线程环境下,控制台打印混乱,输出被截断?

A: 加一个互斥锁。但是,可能先 printf 和后 printf 同时阻塞,但后 print 的得到锁,然后输出,导致次序混乱。

可以开一个线程,把打印内容放到队列里面。但是,遇到异常时最后一条内容还没打印程序就退出了。

自己再写一个安全退出函数,判断队列是否为空,为空才退出,否则等待。

Q: 经常忘记 delete,导致内存泄露?

A:

Q: exit 导致最后一条日志没有输出?

A: exit 太快,要等待日志写入完成。可以判断日志队列是否为空,为空才退出,否则等待日志线程写完。

Q: 多线程环境很难调试?

A:

Q:如何获取实际 backlog 的大小?

A:无法获取

Q: 队列日志,读一条消息,就打开、关闭文件,要是有大量日志,会不会造成写入缓慢?

A:

Q: 类 B 回调类 A 的成员函数?

A:

Q: 在大量短连接且建立连接就立即发送数据的情况下,IO 多路复用对并发处理能力有帮助吗?

A:

Q: 当服务端空闲时,把线程挂起还是销毁?空闲时,线程池挂起还是销毁?

A:

Q: 程序当中有没有办法判断 TCP 半连接和全连接队列的大小呢?

A: 没有办法。

Q: 如何获取任务执行完毕后的返回值?也就是异步执行返回值?

Q: Webbench 压测为 0?

A: 服务端主动关闭 socket 了才算一次。