C++开发中摆脱对boost库的thread的库的依赖

2021-03-09  本文已影响0人  希望是水户洋平

背景

以clickhouse源码为例,讲解如何摆脱对boost库的thread的库的依赖。

本博文素材来源于ClickHouse的GitHub的一次commit记录,原commit链接见下:

https://github.com/ClickHouse-Extras/boost/compare/809d0b72f422d63977c066566d3aee1feea022ba...729dc66b11a006df6c3b32294635cc2572fea594#diff-c237a0f6e67210fece6fa622cddb9cf377beae23bd8a11e73f655abfc56b23e4

commit的截图如下

image.png

可以看到,在这次commit中,删去了对 <boost/thread.hpp>的include,取而代之的是信号量库<mutex>来引入std::call_once。

简介

std::call_once是C++11起提供的,主要用在多线程编程中。在多线程的某些场景中,需要精确地只执行某个函数一次,例如用于初始化的init函数,如果多次调用init函数,则有可能导致不可预知的错误。那么在C++中就可以使用std::call_once配合std::once_flag来达到这个目的。
详细例子见这篇文章:https://en.cppreference.com/w/cpp/thread/call_once

上一篇 下一篇

猜你喜欢

热点阅读