Multicore and Embedded Programming

Overview

The zNet multi-core product is intended for customers that only use a single process that utilizes multiple cores, but do not communicate (at least not via zNet) with other processes. Some applications in this category include embedded software appliances, such as security devices, gateways, etc., and programs that require very fast data exchange between their components via in-process memory in order to meet stringent performance or complexity requirements. 

zNet multi-core functionality includes the Local High Performance Queue with a dedicated Worker Pool; the Stream, Span and Session patterns; and thread-safe high-performance logging and process monitoring. 

Target Audience

C/C++ programmers maintaining or developing software for embedded applications that benefit from utilizing multiple cores.

Features & Benefits

  • Data type driven architecture that decouples invocation from execution
  • API that allows any existing method on any user defined object to be registered for processing and invoked on worker thread
  • Rapid programming with co-located zNet task and data  parallelism patterns
  • zNet building blocks to develop higher-level custom functionality without sacrificing performance

Technical Specs

  • Local High Performance Queue for parallel processing utilizing multiple cores (one per process)
    • Supporting multiple worker thread models:
      • Dedicated pool of worker threads
    • Persistent, supporting commit on disk
  • Programming patterns
    • Span for parallel processing of ranges of data
    • Session pattern for pipe-lining data driven computations
    • Stream pattern for processing data flow of unknown size and intensity
    • Barrier for processing multiple replies at once
    • Callback for processing replies on arrival