Tree [r483] /

File Date Author Commit
 cmake.modules 2015-11-01 aldinuc [r440] Almost complete Win 10 64 MSVS 2015 support (st...
 docs 2012-12-08 massimot [r52] added 2 new papers:
 doxygen 2015-08-02 aldinuc [r305] Fixes in the documentation
 examples 2016-02-03 massimot [r482] minor fix
 experimental 2013-09-08 massimot [r63] First check in of the 2.0.2 release. Main changes:
 ff 5 hours ago massimot [r483] - simple test for getting stats at run-time added
 tests 5 hours ago massimot [r483] - simple test for getting stats at run-time added
 tutorial 2015-11-09 massimot [r456] removed compressor from tutorial examples
 AUTHORS 2013-11-10 massimot [r68] - general enhancement (tested only for Linux at...
 BUILD.ME 2015-06-12 massimot [r286] removed -DBLOCKING_MODE from Makefile(s)
 CMakeLists.txt 2016-01-08 drocco [r476] fixed bug ticket 6
 COPYING 2009-10-15 massimot [r1] new import
 COPYING.LESSER 2010-03-22 massimot [r11] moved to LGPLv3
 Changelog.txt 2015-11-15 massimot [r464] update to Changelog
 FAQ.txt 2013-04-09 massimot [r58] update to release 2.0.1
 README 2014-04-30 aldinuc [r117] MSVS 2013 compilation partially fixed. parallel...
 TODO 2014-03-21 massimot [r102] - many changes, among these: 2010-08-28 massimot [r19] First commit of the new 1.0.0 version.

Read Me


FastFlow is a multi-cores programming framework implemented as a C++ template 
library that offers a set of mechanisms to support low-latency and 
high-bandwidth data flows in a network of threads running on
a cache-coherent multi-core architectures. On these architectures, one of the 
key performance issues concern memory fences, which are required to keep the 
various caches coherent. 
FastFlow provides the programmer with two basic mechanisms:
  1. efficient point-to-pint communication channels;
  2. a memory allocator.

Communication channels, as typical is in streaming applications, are 
unidirectional and asynchronous. They are implemented via fence-free FIFO
queues. The memory allocator is built on top of these queues, thus taking 
advantage of their efficiency.
On top of these basic machnisms FastFlow provides a library of explicitly 
parallel constructs (a.k.a. skeletons) such as pipeline and farm.
The farm skeleton, exploits functional replication and abstracts the 
parallel filtering of successive independent items of the stream under the 
control of a scheduler.


See the BUILD.ME file for instructions about Cmake builds and testing.

See tests directory for some simple runnable examples.


FastFlow is currently actively supported for:

Linux with gcc >4.8 x86_64
Windows 7, Windows 8 with MSVS 2013 x86_64
Mac OS 10.9 with gcc >4.8 or clang 5.x

Previous Fastflow versions has been tested on:

 Linux with gcc (> 4.0.1): i386, x86_64
 Mac OS (>= 10.4) with gcc (> 4.0.1): x86_64, PowerPC G4, PowerPC G5
 Windows XP 32bit with Visual Studio 9 2008 Win32: i386, x86_64 
 Windows 7  64bit with Visual Studio 9 2008 Win32: x86_64 
 Windows 7  64bit with Visual Studio 9 2008 Win64: x86_64 
 Windows 7  64bit with Visual Studio 10 2010 Win32:  x86_64 
 Windows 7  64bit with Visual Studio 10 2010 Win64:  x86_64
 Windows with cygwin: not yet tested
 Linux/PPC with gcc
 Linux/Arm with gcc

Main development platform are Linux and MacOS. Starting from
version 2.0.4 FastFlow eavily uses C++11 features. It can be expected to work on any platform with a C++11 compiler. 

Since "core pattern layer" does not stictly requires C++11 features, it can be expected to work also with an older C++ compiler.

Windows platform can be particuarly slow in debug mode due to iterator
debugging and secure crt layers. Release mode appers to be not affected by the
issue. See

The following preprocessor directives /D_SECURE_SCL=0;
-D_HAS_ITERATOR_DEBUGGING=0) in cmake) might ameliorate the problem. Consider
however that they cannot be used if the application links libraries compiled
with different options (e.g. Boost).


Please report tips, improvements or bug to the FastFlow mailing list
(see or directly to:
 Massimo Torquati <> or <>
 Marco Aldinucci  <>