Your toolbox, since the free lunch is over: a C++ library for multi-threaded programming
C++ CMake C
Latest commit 7949a29 Aug 15, 2016 @tribal-tec tribal-tec committed on GitHub Merge pull request #270 from eile/master
Remove obsolete SKV backend for PersistentMap (see #268)
Permalink
Failed to load latest commit information.
CMake CMake/common adaptions Apr 14, 2016
doc
lunchbox
pthreads
tests
.clang-format
.gitattributes
.gitexternals
.gitignore
.gitsubprojects
.travis.yml
ACKNOWLEDGEMENTS.txt
AUTHORS.txt
CHANGES.txt
CMakeLists.txt
LGPL.txt
LICENSE.txt
README.md

README.md

Introduction

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.

Features

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

Building

Lunchbox is a cross-platform library, designed to run on any modern operating system, including all Unix variants and the Windows operating system. Lunchbox uses CMake to create a platform-specific build environment. The following platforms and build environments are tested:

  • Linux: Ubuntu 14.04, RHEL 6.6 (Makefile, Ninja)
  • Windows: 7 (Visual Studio 2012)
  • Mac OS X: 10.8 (Makefile, Ninja)

Building from source is as simple as:

git clone https://github.com/Eyescale/Lunchbox.git
mkdir Lunchbox/build
cd Lunchbox/build
cmake ..
make