Lunchbox  1.17.0
Multi-threaded C++ toolbox library for all application developers creating high-performance multi-threaded programs.
 All Pages
README.md
1 
2 # Introduction
3 
4 Welcome to Lunchbox, a C++ library for multi-threaded programming. Lunchbox was
5 formerly known as eq::base or co::base, the foundation for the
6 [Equalizer parallel rendering framework](https://github.com/Eyescale/Equalizer)
7 and the [Collage network library](https://github.com/Eyescale/Collage). It is
8 intended for all application developers creating high-performance multi-threaded
9 programs.
10 
11 The
12 [API documentation](http://eyescale.github.io/Lunchbox-1.12/index.html) can be
13 found on [eyescale.github.io](http://eyescale.github.io/). As with any open
14 source project, the available source code, in particular the
15 [unit tests](https://github.com/Eyescale/Lunchbox/tree/1.12/tests) provide a
16 reference for developing applications.
17 
18 Technical questions can be posted to the Equalizer
19 [Developer Mailing List](http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev),
20 or directly to
21 [info@equalizergraphics.com](mailto:info@equalizergraphics.com?subject=Lunchbox%20question).
22 
23 Commercial support, custom software development and porting services are
24 available from [Eyescale](http://www.eyescale.ch). Please contact
25 [info@eyescale.ch](mailto:info@eyescale.ch?subject=Lunchbox%20support)
26 for further information.
27 
28 # Features
29 
30 Lunchbox provides the following major features to facilitate the
31 development and deployment of multi-threaded applications:
32 * Operating System Abstraction: lunchbox::Atomic, lunchbox::Condition,
33  lunchbox::DSO, @ref bitops "bit operations", lunchbox::daemonize(),
34  (lunchbox::Clock, lunchbox::MemoryMap, lunchbox::PerThread, lunchbox::RNG,
35  lunchbox::Thread)
36 * High-Performance Threading Primitives: lunchbox::Buffer, lunchbox::LFQueue,
37  lunchbox::LFVector, lunchbox::Monitor, lunchbox::MTQueue,
38  lunchbox::RequestHandler, lunchbox::SpinLock, (lunchbox::Lock,
39  lunchbox::TimedLock)
40 * Utility classes: lunchbox::Any, lunchbox::Log, lunchbox::Pool,
41  lunchbox::UnorderedIntervalSet, lunchbox::Future, lunchbox::PersistentMap,
42  (lunchbox::ScopedMutex)
43 * Detailed @ref Changelog
44 
45 # Building
46 
47 Lunchbox is a cross-platform library, designed to run on any modern
48 operating system, including all Unix variants and the Windows operating
49 system. It requires a C++11 compiler and uses CMake to create a
50 platform-specific build environment. The following platforms and build
51 environments are tested:
52 
53 * Linux: Ubuntu 16.04, RHEL 6.8 (Makefile, Ninja)
54 * Windows: 7 (Visual Studio 2012)
55 * Mac OS X: 10.9 (Makefile, Ninja)
56 
57 Building from source is as simple as:
58 
59  git clone --recursive https://github.com/Eyescale/Lunchbox.git
60  mkdir Lunchbox/build
61  cd Lunchbox/build
62  cmake -GNinja -DCLONE_SUBPROJECTS=ON ..
63  ninja