一些总结-C++

1.spdlog

需要安装spdlog库,然后连接器增加-lspdlog

不需要复制头文件到目录,安装到机器上之后,从系统目录加载头文件即可。

部分用法:

 2.redis

需要安装hiredis库,链接器-lhiredis

不需要复制头文件到目录,安装到机器上之后,从系统目录加载头文件即可

需要三部:connect,  auth,command

部分用法:

 

 

 3.json

之前用的是cjson,可以说是最简单的了,但是用起来比较麻烦。

现在用的是nlohmann json,更现代一些,用起来很轻松,只不过语法有点怪。

需要从github上取最新的头文件,不需要编译。注意别取错了,他有一个编译的版本、要找到那个单独头文件only的,非常方便。找错了就麻烦了。

引用json.hpp即可。

读取一个嵌套json,这时候语法就比较奇怪了,比如说.value()可以直接用=赋值给vector,这是我没想到的。

此外读取key(),也需要指明是string。

 

 4.tcpshm库

一个轻松用来tcp/共享内存的库,一台机器上就配置成共享内存,跨机器就配置成tcp,可以说是完美契合我们目前需求的库。当然,两套方式接口一样。

只能用于linux

无需编译,直接引用头文件即可。

分为服务端和客户端。

客户端需要connect,然后就阻塞这个进程。等带OnMsg的消息即可。

服务端需要启动,然后等待连接即可。

注意消息号不要定义0,0默认是心跳。

封装的很好,很久没见到这么方便的库了。

.

 5.一种线程间通信队列的方式

一种普遍的调用方式,使用互斥锁保护队列,使用条件变量进行通知,通过判断队列非空来避免虚假唤醒。

什么是虚假唤醒?

当一定的条件触发时会唤醒很多在阻塞态的线程,但只有部分的线程唤醒是有用的,其余线程的唤醒是多余的。
比如说卖货,如果本来没有货物,突然进了一件货物,这时所有的顾客都被通知了,但是只能一个人买,所以其他人都是无用的通知。

 

 

猜你喜欢

转载自blog.csdn.net/baidu_39486224/article/details/131552090
今日推荐