Description
CAF is an open source C++11 actor model implementation featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more.
C++ Actor Framework alternatives and similar libraries
Based on the "Concurrency" category.
Alternatively, view C++ Actor Framework alternatives based on common mentions on social networks and blogs.
-
Taskflow
A General-purpose Parallel and Heterogeneous Task Programming System -
moodycamel
A fast multi-producer, multi-consumer lock-free concurrent queue for C++11 -
Thrust
[ARCHIVED] The C++ parallel algorithms library. See https://github.com/NVIDIA/cccl -
readerwriterqueue
A fast single-producer, single-consumer lock-free queue for C++ -
NCCL
Optimized primitives for collective multi-GPU communication -
ck
Concurrency primitives, safe memory reclamation mechanisms and non-blocking (including lock-free) data structures designed to aid in the research, design and implementation of high performance concurrent systems developed in C99+. -
Boost.Compute
A C++ GPU Computing Library for OpenCL -
C++React
C++React: A reactive programming library for C++11. -
MPMCQueue.h
A bounded multi-producer multi-consumer concurrent queue written in C++11 -
RaftLib
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators -
SPSCQueue.h
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11 -
VexCL
VexCL is a C++ vector expression template library for OpenCL/CUDA/OpenMP -
continuable
C++14 asynchronous allocation aware futures (supporting then, exception handling, coroutines and connections) -
A C++14 library for executors
C++ library for executors -
Bolt
Bolt is a C++ template library optimized for GPUs. Bolt provides high-performance library implementations for common algorithms such as scan, reduce, transform, and sort. -
xenium
A C++ library providing various concurrent data structures and reclamation schemes. -
thread-pool
A modern, fast, lightweight thread pool library based on C++20 -
CUB
THIS REPOSITORY HAS MOVED TO github.com/nvidia/cub, WHICH IS AUTOMATICALLY MIRRORED HERE. -
SObjectizer
SObjectizer: it's all about in-process message dispatching! -
Light Actor Framework
Laughably simple yet effective Actor concurrency framework for C++20 -
BlockingCollection
C++11 thread safe, multi-producer, multi-consumer blocking queue, stack & priority queue class -
Libclsph
OpenCL based GPU accelerated SPH fluid simulation library -
Easy Creation of GnuPlot Scripts from C++
A simple C++17 lib that helps you to quickly plot your data with GnuPlot -
cupla
The project alpaka has moved to https://github.com/alpaka-group/cupla -
alpaka
The project alpaka has moved to https://github.com/alpaka-group/alpaka -
eXtended Template Library
eXtended Template Library -
OpenCL
The open standard for parallel programming of heterogeneous systems.
InfluxDB - Power Real-Time Data Analytics at Scale
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of C++ Actor Framework or a related project?
README
CAF: the C++ Actor Framework
CAF is an open source implementation of the actor model for C++ featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more.
Online Resources
- Homepage: https://www.actor-framework.org
- Developer Blog: https://www.actor-framework.org/blog
- Guides and Tutorials: https://www.cafcademy.com/articles
- Manual: https://actor-framework.readthedocs.io
- Doxygen: https://codedocs.xyz/actor-framework/actor-framework
Report Bugs / Get Help
- Open Issues on GitHub: https://github.com/actor-framework/actor-framework/issues/new
- Ask Questions on StackOverflow: https://stackoverflow.com/questions/ask?tags=c%2b%2b-actor-framework
Community
- Chat: https://gitter.im/actor-framework/chat
- Twitter: https://twitter.com/actor_framework
- User Mailing List: https://groups.google.com/d/forum/actor-framework
Get CAF
We currently officially maintain only the CAF package available on Homebrew.
More package managers are supported by community members:
Get the Sources
git clone https://github.com/actor-framework/actor-framework.git
cd actor-framework
Build CAF from Source
CAF uses CMake as its build system of choice. To make
building CAF more convenient from the command line, we provide a configure
script that wraps the CMake invocation. The script only works on UNIX systems.
On Windows, we recommend generating an MSVC project file via CMake for native
builds.
Using the configure
Script
The script is a convenient frontend for CMake
. See configure -h
for a list
of available options. By default, the script creates a build
directory and
asks CMake to generate a Makefile
. A build with default settings generally
follows these steps:
./configure
cd build
make
make test [optional]
make install [as root, optional]
Using CMake
To generate a Makefile for building CAF with default settings, either use a CMake GUI or perform these steps on the command line:
mkdir build
cd build
cmake ..
After this step, cmake -LH
prints the most useful configuration options for
CAF, their default value, and a helptext.
Other CMake projects can add CAF as a dependency by using find_package
and
listing the required modules (e.g., core
or io
) . When installing CAF to a
non-standard location, set CAF_ROOT
prior to calling find_package
.
Dependencies
- CMake (for building CAF)
- OpenSSL (only when building the OpenSSL module)
Supported Platforms
C++ is an evolving language. Compiler vendors constantly add more language and standard library features. Since CAF runs on many platforms, this means we need a policy that on the one hand ensures that we only use a widely supported subset of C++ and on the other hand that we naturally progress with the shifting landscape to eventually catch up to more recent C++ additions (in order to not "get stuck").
So instead of singling out individual compiler versions, we build CAF for each commit on all platforms that we currently deem relevant. Everything that passes our CI is "fair game".
Our CI covers Windows (latest MSVC release), macOS (latest Xcode release), FreeBSD (latest) and several Linux distributions (via the Docker images found here). For Linux, we aim to support the current releases (that still receive active support) for the major distributions. Note that we do not build on Linux distributions with rolling releases, because they generally provide more recent build tools than distributions with traditional release schedules and thus would only add redundancy.
Build Documentation Locally
- Building an offline version of the manual requires
Sphinx:
sh cd manual sphinx-build . html
- Building an offline version of the API reference documentation requires
Doxygen (simply run the
doxygen
command at the root directory of the repository).
Scientific Use
If you use CAF in a scientific context, please use one of the following citations:
@inproceedings{cshw-nassp-13,
author = {Dominik Charousset and Thomas C. Schmidt and Raphael Hiesgen and Matthias W{\"a}hlisch},
title = {{Native Actors -- A Scalable Software Platform for Distributed, Heterogeneous Environments}},
booktitle = {Proc. of the 4rd ACM SIGPLAN Conference on Systems, Programming, and Applications (SPLASH '13), Workshop AGERE!},
pages = {87--96},
month = {Oct.},
year = {2013},
publisher = {ACM},
address = {New York, NY, USA}
}
@article{chs-rapc-16,
author = {Dominik Charousset and Raphael Hiesgen and Thomas C. Schmidt},
title = {{Revisiting Actor Programming in C++}},
journal = {Computer Languages, Systems \& Structures},
volume = {45},
year = {2016},
month = {April},
pages = {105--131},
publisher = {Elsevier}
}
You can find the papers online at http://dx.doi.org/10.1145/2541329.2541336 and http://dx.doi.org/10.1016/j.cl.2016.01.002.