Welcome to Lunchbox, a C++ library for multi-threaded programming. Lunchbox was formerly known as eq::base or co::base, the foundation for the Equalizer parallel rendering framework and the Collage network library. It is intended for all application developers creating high-performance multi-threaded programs.
The API documentation can be found on eyescale.github.io. As with any open source project, the available source code, in particular the unit tests provide a reference for developing applications.
Technical questions can be posted to the Equalizer Developer Mailing List, or directly to info@equalizergraphics.com.
Commercial support, custom software development and porting services are available from Eyescale. Please contact info@eyescale.ch for further information.
Lunchbox provides the following major features to facilitate the development and deployment of multi-threaded applications:
- Operating System Abstraction: lunchbox::Atomic, lunchbox::Condition, lunchbox::DSO, @ref bitops "bit operations", lunchbox::daemonize(), (lunchbox::Clock, lunchbox::MemoryMap, lunchbox::PerThread, lunchbox::RNG, lunchbox::Thread)
- High-Performance Threading Primitives: lunchbox::Buffer, lunchbox::LFQueue, lunchbox::LFVector, lunchbox::Monitor, lunchbox::MTQueue, lunchbox::RequestHandler, lunchbox::SpinLock, (lunchbox::Lock, lunchbox::TimedLock)
- Utility classes: lunchbox::Any, lunchbox::Log, lunchbox::Pool, lunchbox::UnorderedIntervalSet, lunchbox::Future, lunchbox::PersistentMap, (lunchbox::ScopedMutex)
- Detailed @ref Changelog
Lunchbox is a cross-platform library, designed to run on any modern operating system, including all Unix variants and the Windows operating system. It requires a C++11 compiler and uses CMake to create a platform-specific build environment. The following platforms and build environments are tested:
- Linux: Ubuntu 16.04, RHEL 6.8 (Makefile, Ninja)
- Windows: 7 (Visual Studio 2012)
- Mac OS X: 10.9 (Makefile, Ninja)
Building from source is as simple as:
git clone --recursive https://github.com/Eyescale/Lunchbox.git
mkdir Lunchbox/build
cd Lunchbox/build
cmake -GNinja -DCLONE_SUBPROJECTS=ON ..
ninja