最近在QQ群听说百度的brpc非常好,所以下载研究一下。
首先,它的文档写的非常用心,要点个赞。
里面有个brpc_intro.pptx用搞笑且浅显易懂的方式来做介绍,非常合我心意。
闲话少说,下面转入正题。
brpc代码量有点大,没时间细看,粗略看了一下代码,感觉有些地方有改进空间。
下面描述一下
大量代码在int main()中调用了
server.RunUntilAskedToQuit()
它的实现如下
void Server::RunUntilAskedToQuit() {
while (!IsAskedToQuit()) {
bthread_usleep(1000000L);
}
Stop(0/*not used now*/);
Join();
}
这实际上相当于浪费了一个线程来做无意义的事,此处差评
然后看Server::StartInternal,从下面这段红色代码可以感觉出对线程的用法设计有缺陷,至少是没那么完善
// Wait until all created bthreads finish the init function.
for (size_t i = 0; i < ncreated; ++i) {
while (!init_args[i].done) {
bthrea

本文简要探讨了百度的brpc,对其文档质量表示赞赏,但指出`RunUntilAskedToQuit()`方法可能浪费线程资源,以及`Server::StartInternal`中的线程管理设计存在不足。同时,提到brpc和corelooper在某些功能上有相似之处,并预告corelooper的开源计划。
最低0.47元/天 解锁文章
732

被折叠的 条评论
为什么被折叠?



