Menu

About SObjectizer

Yauheni Akhotnikau Boris Sivko Nicolai Grodzitski korish

SObjectizer is a small framework which simplifies the development of multithreaded and concurrent applications in C++. It has been used by different types of projects: from small utilities to large distributed and highly loaded applications.

SObjectizer is strongly influenced by agent-oriented approach. It helps to organize an application as an aggregate of agents which interact with each other only by asynchronous messages. SObjectizer takes responsibility of in-process message dispatching and provides working context for message processing. These features are provided by various ready-to-use dispatchers just out-of-box.

Since v.5.5.13 SObjectizer also supports CSP-like concurrency via message chains. Message chains were added to SObjectizer for simplification of interaction between agents and user threads. But they can be used also to write multithreaded C++ application in very similar way as Go applications with goroutines and channels.

SObjectizer has a long history: starting as an in-house project inside JSP Intervale and becoming an open-source project in 2006. Until 2013 SObjectizer had been developed inside Intervale and public releases of full source code in tarballs were uploaded to SourceForge. In 2013 SObjectizer's SVN repository was migrated completely to SourceForge.

Now SObjectizer is being developed by stiffstream company. So if you need a commercial support for SObjectizer or want to customize SObjectizer to your specific needs you can ask for it: info at stiffstream dot com.

SObjectizer is distributed under New-BSD license, so it can be used either in open-source or closed-source projects. SObjectizer depends on some external projects, all of which are distributed under non-GPL free open-source licenses.

Till October 2014 the name SObjectizer was used as a common name for several libraries which are built one upon another. But since SObjectizer core version 5.5.0 release, the name SObjectizer is related only to so_5 subproject, because the development of other subprojects was suspended.

Just to keep the history there is a list of former SObjectizer's subprojects. Who knows, may be in the future some of them will be active again! :)

  • so_5. The core of SObjectizer family. This library provides the main functionality for agents, mailboxes, messages and signals, timers, dispatchers and so on. The following libraries are entirely based on so_5;
  • so_log_2. A thin wrapper of ACE_Logging framework which simplifies logging of SObjectizer's agents;
  • so_5_transport. The library which allows us to work with transport channels (e.g. TCP/IP sockets in SObjectizer-style);
  • mbapi_4. The highest layer level for so_5 message passing which allows us to create distributed SObjectizer applications;
  • so_sysconf_4. The library which allows us to build a complex SObjectizer application from several DLL libraries.

Related

Wiki: Home