README

Developing high performance C++ software has never been so easy !


hmbdc is an open source header-only C++ framework and library built on top of  various real-world tested lockfree algorithms that facilitate ultra low latency and high throughput messaging (inter-thread, inter-process and thru network) programming. 
It avoids unnecessary serialization and memory copy whenever possible and take most out of the allocated hardware resources (memory, CPUs, NICs) to achieve latency and throughput goals. It works as a framework to provide consistent programming experience, and it can also be used as a library to collaborate with other existing frameworks.

Keywords and features:

  • easy to use/high performance C++ type tag based message pub/sub framework, symmetric (no broker process), no IDL requirments, header-only
  • performs well for small(bytes) and large messages (>10MB)
  • Active Object pattern framework - multi-threaded without the headache
  • lockfree / disruptor pattern in implementation
  • low latency / high throughput / support kernel bypassing driver
  • support multiple transport mechanisms with the consistent look and feel C++17 pub/sub API:
    •     interthread
    •     interprocess
    •     UDP multicast
    •     TCP
    •     netmap multicast
    •     reliable multicast
    •     reliable netmap
  • message stream recording and replay, integration with any other programming languages that supports Linux piping.
  • supports both x86_64 and ARM64(aarch64) platforms Linux and QNX

Who needs hmbdc? 

The short answer is:
hmbdc is for developers who find existing middle ware being slow or expensive when it comes to code performance, project delivery speed and hardware resources.
The longer version:
It is used in areas that are CPU or network intensive with ultra high performance (latency / throughput) requirements - such as high frequency trading, high performance server-backend, autonomous driving, robotics, multi-core real-time systems, etc.
hmbdc helps you get the job done quick and fast with way less hardware costs!

Some of hmbdc users:






How do I get started?

* check the design doc at the doc tab;
  read the easy example code: chat chat2 chat3 to get the
  the features offered by hmbdc TIPS pub/sub
* html doc is provided as API reference
* hmbdc requires 
  gcc 8.4.1 (or later) on Linux, x86_64 or aarch64
  clang 10.0.1 (or later) on Linux, x86_64 or aarch64
  (contact us for QNX SDP7.1 for x86_64 or aarch64 support)
* boost (later than 1.62), netmap and rnetmap need 
  netmap driver
* header-only: use your favorite building tools
* examples and tool building instructions are in src code