chenshuo / muduo

Event-driven network library for multi-threaded Linux server in C++11
https://github.com/chenshuo/muduo
Other
14.7k stars 5.15k forks source link

将参数改成&&并且由外部来std::move是否更优? #549

Closed chenyaoyu closed 2 years ago

chenyaoyu commented 2 years ago

https://github.com/chenshuo/muduo/blob/90920bbad80e544da9a8a94b16ad8ab4bb66e652/muduo/net/Channel.h#L43 这里是否依旧会有拷贝构造,将参数改成&&并且由外部来std::move是否更优?

chenshuo commented 2 years ago

如果我没有记错,如果改成 &&,那么通常你需要同时提供一个 const & 的重载。否则调用方不能用 lvalue 对象当成参数。 对于 Channel 的这几个 callback,这么做是否对效率有提升,我保持怀疑。 因为建立和销毁一个 TCP 连接在 kernel 里需要的 CPU 开销远远大于调用 Channel::set*Callback(),优化后者是无用功。