folly

一、简介

Folly是,Facebook于2012年6月初开源的一个基于C++11的C++组件库,提供了类似Boost库和std库的功能,包括散列、字符串、向量、内存分配、位处理等,以满足大规模高性能的需求,对Boost和std进行很好的补充和增强。Folly主要进行了速度上的提高、内存优化,以及数据结构类型的丰富。Folly由分布在61个头文件(还有20个cpp实现文件),40多个组件构成,涉及内存管理(Arena等)、高性能的数据结构(string和vector等)、实用数据结构(延时队列)、线程相关的优化(线程本地内存、旋转锁)等。

二、安装

apt-get install libgflags-dev libgoogle-glog-dev libdouble-conversion-dev libevent-dev 
git clone https://github.com/facebook/folly.git
autoreconf -ivf
./configure
make && make install
参考:http://blog.chinaunix.net/uid-521083-id-3817523.html
时间: 2024-12-24 12:14:40

folly的相关文章

folly::AtomicHashmap源码分析

本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Atomic的两点背景 看下这个场景,老张去厕所,发现门是锁着的,他就在门口等着里边人出来,此时小王也来了,他想了想,决定去楼上的厕所碰碰运气. 如果把门类比为一种竞争资源的话,老张就像mutex,而小王更像atomic,注意是像而已. atomic跟传统的通过临界区加锁来避免竞争的多线程处理方式来说,它更像是一种状态机编程,根据当前的状态做出相应的逻辑. 而至于是小王还是老张谁先解决内急,无从得知,同样,mu

folly教程系列之:future/promise

     attension:本文严禁转载. 一.前言 promise/future是一个非常重要的异步编程模型,它可以让我们摆脱传统的回调陷阱,从而使用更加优雅.清晰的方式进行异步编程.c++11中已经开始支持std::future/std::promise,那么为什么folly还要提供自己的一套实现呢?原因是c++标准提供的future过于简单,而folly的实现中最大的改进就是可以为future添加回调函数(比如then),这样可以方便的链式调用,从而写出更加优雅.间接的代码,然后,改进还

folly无锁队列正确性说明

folly无锁队列是facebook开源的一个无所队列,使用的是单向链表,通过compare_exchange语句实现的多生产多消费的队列,我曾经花了比较多的时间学习memory_order的说明,对release-acquire语义,自认为还是比较了解.如果一个atomic对象使用std::memory_order_release进行写操作,而另外一个线程使用std::memory_order_acquire进行读操作,那么这两个线程之间形成同步关系.std::memory_order_rel

folly学习心得(转)

原文地址:  https://www.cnblogs.com/Leo_wl/archive/2012/06/27/2566346.html 阅读目录 学习代码库的一般步骤 folly库的学习心得 总结 回到目录 学习代码库的一般步骤 1) 编译安装:2) 学习doc/manual文档:3) 学习test用例:4) 测试并使用. 回到目录 folly库的学习心得 独立有用的小技巧 Eventfd.h ---- 针对eventfd系统调用的包装器. Foreach.h ---- 伪语句(作为宏语句来

安装folly库以及folly的ConcurrentHashMap的简单使用

我在写grpc的实例时, 需要使用一个多线程的hash map, C++标准库中没有多线程的hash map, facebook开源的folly中存在大量的基础类, 中间存在一个高性能的hash map,这个正是我所需要的, 所以在这里简介一下folly库, 按照官方说明, folly库安装需要gcc 5.1+ 和支持C++14的编译器编译的boost. 在安装folly之前, 还需要安装google的glog, glog的github仓库在: https://github.com/google

folly::AtomicHashmap源码分析(二)

本文为原创,转载请注明:http://www.cnblogs.com/gistao/ 背景 上一篇只是细致的把源码分析了一遍,而源码背后的设计思想并没有写,设计思想往往是最重要的,没有它,基本无法做整体性的优化或正确的使用, 但是根据结果反推原因是困难的,也极容易不到位,这里‘磕磕绊绊’写下自己的理解,另外对源码里的‘问题’也写出来. 简单 调试一个多线程程序是比较头疼的,而使用atomic来编写一个正确的多线程数据结构更是困难的,出了问题一般都不是随机问题,且等着复现看log吧, 所以简单这个

根据76大细分词性对单词进行归组(二)

词性的重要性不言而喻,尤其是对于自然语言处理来说,哪怕就是记单词,根据词性对单词进行归组也是非常有帮助的. superword是一个Java实现的英文单词分析软件,主要研究英语单词音近形似转化规律.前缀后缀规律.词之间的相似性规律等等. 各大词性及其包括的词: 32.N-COUNT-COLL(可数集合名词) (词数:50) 1 aristocracy army array audience band 2 cast chapter command commission committee 3 co

Spark Streaming从Kafka中获取数据,并进行实时单词统计,统计URL出现的次数

1.创建Maven项目 创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/74571374 2.启动Kafka A:安装kafka集群:http://blog.csdn.net/tototuzuoquan/article/details/73430874 B:创建topic等:http://blog.csdn.net/tototuzuoquan/article/details/73430874 3.编写Pom文件 <?xml v

facebook开源项目集合

Facebook的开源大手笔 1. 开源Facebook平台代码 Facebook在2008年选择将该平台上的重要部分的代码和应用工具开源.Facebook称,平台已经基本发展成熟,此举可以让开发者更全面地理解整个Facebook平台,更容易地为Facebook开发应用软件,并可以回报社区. 该项目代号为“FBOpen”,其中包含了实现Facebook平台的一些基础设施.功能等,如API架构.FQL分析器.FBML分析器.FBJS,以及许多常用方法和标签的实现,代码基于PHP.这意味着其他开发者