Folly C++: Vollständiges Tutorial mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Folly für C++: Vollständiges Tutorial mit Praxisbeispielen

1. Was ist Folly und warum braucht man es?

Folly (Facebook Open-source LibrarY) ist eine C++-Bibliothek, die bei Facebook (heute Meta) entwickelt und eingesetzt wird. Sie bietet eine Sammlung von leistungsstarken, gründlich getesteten und modernen Komponenten, die Lücken in der C++-Standardbibliothek (std) und Boost schließen. Folly ersetzt nicht die STL, sondern erweitert sie um Lösungen für typische Herausforderungen bei der Entwicklung großer, verteilter Systeme und hochlastiger Server.

Warum Folly? In der modernen C++-Entwicklung benötigt man oft Werkzeuge, die die Standardbibliothek nicht bietet: effiziente Container mit speziellen Eigenschaften (z. B. F14HashMap), Tools für asynchrone Programmierung (Futures), atomare Operationen mit optimierten Speicherbarrieren (AtomicHashMap), sperrfreie Speicherverwaltung (ConcurrentSkipList) und viele weitere Low-Level-Optimierungen. Folly stellt all dies als fertige, praxiserprobte Komponenten bereit. Besonders nützlich ist es für Entwickler, die performanten Servercode schreiben, mit Netzwerkprotokollen arbeiten, große Datenmengen verarbeiten oder deterministisches Verhalten in Multithread-Szenarien benötigen.

Der entscheidende Vorteil von Folly ist der Fokus auf Leistung und Korrektheit. Viele Algorithmen in Folly nutzen die neuesten C++-Features (C++14/17/20) und berücksichtigen die Eigenheiten moderner Prozessoren (Caches, Branch Prediction, SIMD-Instruktionen). Es ist nicht nur "eine weitere Bibliothek", sondern ein Werkzeugkasten, mit dem Sie Code schreiben können, der schneller und effizienter läuft als vergleichbare Lösungen mit reinem STL oder Boost – besonders unter hoher Parallelität.

2. Installation

Folly ist eine C++-Bibliothek und wird daher nicht über pip oder npm installiert. Sie müssen die Bibliothek aus dem Quellcode kompilieren und in Ihr Projekt einbinden. Die empfohlene Methode ist die Verwendung von CMake.

Installation mit vcpkg (empfohlen für Windows und Linux)

# vcpkg installieren, falls noch nicht geschehen
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # oder bootstrap-vcpkg.bat für Windows
./vcpkg integrate install

# Folly installieren
./vcpkg install folly:x64-windows  # für Windows
./vcpkg install folly:x64-linux    # für Linux

Installation mit Conan

pip install conan
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
conan install folly/2023.01.30@ -r bincrafters

Aus dem Quellcode kompilieren (Linux/macOS)

git clone https://github.com/facebook/folly
cd folly
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

In ein CMake-Projekt einbinden

find_package(folly REQUIRED)
target_link_libraries(my_project PRIVATE Folly::folly)

3. Schnellstart – Minimales funktionsfähiges Beispiel

Das folgende Beispiel zeigt die Verwendung von folly::Future für asynchrone Aufgaben und folly::format für die String-Formatierung.

#include <iostream>
#include <folly/futures/Future.h>
#include <folly/Format.h>

using namespace folly;

int main() {
    // Asynchrone Aufgabe: Zahl 42 zurückgeben
    auto future = makeFuture(42);

    // Verarbeitungskette: mit 2 multiplizieren und in String umwandeln
    auto result = future
        .thenValue([](int x) { return x * 2; })
        .thenValue([](int x) { return format("Ergebnis: {}", x); })
        .get(); // Blockiert den Thread, bis das Ergebnis vorliegt

    std::cout << result << std::endl; // Gibt aus: Ergebnis:                    

Empfehlungen