从 extern "C" 到跨语言调用

在对 librdkafka 的 pthread 切 bthread 改造时,由于 librdkafka 是 C 代码实现,而 bthread 是 C++ 代码实现,所以直接联编两者会报错,需要新增一层 wrapper ,使用 extern "C" 包裹。cr 的时候同事就问我,这个 extern "C" 有什么用,当时我回答这样就可以让 C 调用 C++ 代码了,但是进一步深究其原理时,我就答不上了。抽空专门让克劳德老师辅导我了一下。

Read More

协程学习

Q2 尝试对 c++ librdkafka 库进行了改造,将 pthread 切为了 bthread,以优化生产者场景下,连接大规模集群时线程数过多的问题。顺便基于 bthread 的代码在 ai 的辅助下对协程的实现原理进行了学习。(前三段非 ai 生成)

Read More