SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
What’s new in SObjectizer-5.5.8
SObjectizer Team, Aug 2015
A Short Overview
There are several new features in SObjectizer v.5.5.8.
They can be divided into two groups:
● agent’s priorities and three new dispatchers with priorities
support,
● simplification of working with ad-hoc agents.
This presentation briefly describes them.
SObjectizer Team, Aug 2015
Agent’s priorities and new dispatchers
SObjectizer Team, Aug 2015
Since v.5.5.8 every agent has a priority.
Priority is just an optional mark for dispatchers.
Some dispatchers can use this mark to do some specific
event processing with respect to agent’s priorities.
Some dispatchers do not use this mark (all old dispatchers
like one_thread or thread_pool ignore priorities).
SObjectizer Team, Aug 2015
Only eight priorities are available.
Priorities are given as enumeration so_5::priority_t with
members like p0, ..., p7.
Priority so_5::priority_t::p0 is the lowest.
Priority so_5::priority_t::p7 is the highest.
SObjectizer Team, Aug 2015
Priority can be specified during agent construction via
context_t object:
class my_agent : public so_5::rt::agent_t
{
public :
my_agent( context_t ctx )
: so_5::rt::agent_t( ctx + so_5::priority_t::p6 )
...
};
Once assigned the agent’s priority cannot be changed.
By default all agents have priority so_5::priority_t::p0.
SObjectizer Team, Aug 2015
Old dispatchers, like one_thread, active_obj, active_group,
thread_pool and adv_thread_pool do not support agent’s
priorities.
It means that those dispatchers will ignore priorities of
agents during events processing.
But there are three new dispatchers which understand agent’
s priorities and implement different events handling policies.
SObjectizer Team, Aug 2015
New dispatchers are divided into two groups:
1. prio_one_thread.
2. prio_dedicated_threads.
SObjectizer Team, Aug 2015
Group prio_one_thread consists of two dispatchers.
They do processing of events of all priorities on the same
working thread.
Those dispatchers are defined inside so_5::disp::
prio_one_thread namespace.
SObjectizer Team, Aug 2015
Dispatcher prio_one_thread::strictly_ordered maintains
event queue where all events are strictly ordered from
highest priority to lowest.
An event with lower priority cannot be handled if there are
some events with higher priorities.
Events with the same priority are ordered in chronological
order.
SObjectizer Team, Aug 2015
Dispatcher prio_one_thread::queued_round_robin maintains
several event queues: one for every priority.
This dispatcher handles no more than Q7 events of priority
p7, then no more than Q6 events of priority p6 and so on.
Values of Q7, Q6, …, Q0 can be configured during creation
of dispatcher instance.
SObjectizer Team, Aug 2015
Group prio_dedicated_threads consists of just one
dispatcher.
This dispatcher creates a dedicated thread for every priority.
It means that there are eight working threads and events
with different priorities are handled on different threads.
This dispatcher is defined inside so_5::disp::
prio_dedicated_threads::one_per_prio namespace.
SObjectizer Team, Aug 2015
Different priority-respected dispatchers can be used in
different circumstances.
SObjectizer Team, Aug 2015
prio_one_thread::strictly_ordered dispatcher can be used
when there is a need to handle some event as soon as
possible.
For example, agent task_processor with priority p0 handles
messages task_requests.
Another agent, processor_config with priority p1 handles
message new_config with new parameters for task
processing.
SObjectizer Team, Aug 2015
Agents task_processor and processor_config could share
some common data (like configuration parameters block).
They can access and modify that shared data without the
need of data synchronization because they work on the
same working thread.
SObjectizer Team, Aug 2015
prio_one_thread::queued_round_robin dispatcher can be
used when it is necessary to ensure progress in handling
requests with different priorities.
For example there could be thousands of read-data requests
from data-readers and hundreds of update-data requests
from data-writers.
It is possible to assign p1 and quote 100 for agents for
serving read-data requests. Agents for serving update-data
request could have p0 and quote 10.
SObjectizer Team, Aug 2015
prio_dedicated_threads::one_per_prio dispatcher can be
used when it is necessary to provide different context for
different types of work.
For example there could be very heavyweight requests like
image transformation and very lightweight requests like
asking image’s metadata.
Lightweight requests could be handled by agents with higher
priorities and heavyweight request -- by agents with lower
priorities.
SObjectizer Team, Aug 2015
More detailed information about agent’s priorities and three
new dispatcher can be found in Project’s Wiki.
There are also three new examples in SObjectizer
distribution: machine_control, news_board and
prio_work_stealing. They show usage of new dispatchers.
SObjectizer Team, Aug 2015
Simplification of work with ad-hoc agents
SObjectizer Team, Aug 2015
There are several small improvements in work with ad-hoc
agents. But the total effect of them is a significant
simplification of ad-hoc agents usage.
SObjectizer Team, Aug 2015
It is possible to specify agent_context for ad-hoc agent. It
allows to assign not only a priority for ad-hoc agent but also
other stuff like message limits:
env.introduce_coop( []( so_5::rt::agent_coop_t & coop ) {
auto a = coop.define_agent( coop.make_agent_context()
// Priority for ad-hoc agent.
+ so_5::priority_t::p7
// Message limits.
+ so_5::rt::agent_t::limit_then_drop< get_status >( 1 )
+ so_5::rt::agent_t::limit_then_abort< task_request >( 1000 ) );
...
} );
SObjectizer Team, Aug 2015
Also it is possible to use ad-hoc agent proxy instead of ad-
hoc agent’s direct mbox.
For example, in agent subscription:
auto a = coop.define_agent();
// v.5.5.8 way:
a.event< get_status >( a, []{...} );
// Pre v.5.5.8 way:
a.event< get_status >( a.direct_mbox(), []{...} );
SObjectizer Team, Aug 2015
Or for messages sending:
using namespace std::chrono;
auto a = coop.define_agent();
// v.5.5.8 way:
so_5::sent_to_agent< get_status >( a );
so_5::send_delayed_to_agent< get_status >( a, milliseconds... );
so_5::send_periodic_to_agent< get_status >( a, milliseconds... );
// Pre v.5.5.8 way:
so_5::send_to_agent< get_status >( a.direct_mbox() );
so_5::send_delayed_to_agent< get_status >( a.direct_mbox(), milliseconds... );
so_5::send_periodic_to_agent< get_status >( a.direct_mbox(), milliseconds... );
SObjectizer Team, Aug 2015
Creation of children coops simplified. Reference to
agent_coop_t object can be used instead of the coop name.
env.introduce_coop( []( so_5::rt::agent_coop_t & parent ) {
parent.define_agent()
.on_start( [&parent]{
parent.environment().introduce_child_coop( parent,
[]( so_5::rt::agent_coop_t & child ) {
child.define_agent()...
} );
...
} );
...
} );
SObjectizer Team, Aug 2015
New methods for coop deregistration are added to
agent_coop_t:
env.introduce_coop( []( so_5::rt::agent_coop_t & coop ) {
coop.define_agent()
.event< finish_work >( some_mbox, [&coop] {
// v.5.5.8 way:
coop.deregister_normally();
// Pre v.5.5.8 way:
coop.environment().deregister_coop(
coop.query_coop_name(),
so_5::rt::dereg_reason::normal );
} )
...
} );
SObjectizer Team, Aug 2015
The full list of changes in v.5.5.8 with more deep
explanations can be found in the corresponding section of
Project’s Wiki.
SObjectizer Team, Aug 2015
Additional Information:
Project’s home: http://sourceforge.net/projects/sobjectizer
Documentation: http://sourceforge.net/p/sobjectizer/wiki/
Forum: http://sourceforge.net/p/sobjectizer/discussion/
Google-group: https://groups.google.com/forum/#!forum/sobjectizer
GitHub mirror: https://github.com/masterspline/SObjectizer

Contenu connexe

Similaire à What's new in SObjectizer v5.5.8

What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)Yauheni Akhotnikau
 
What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)Yauheni Akhotnikau
 
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersDive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersYauheni Akhotnikau
 
What's new in SObjectizer 5.5.9
What's new in SObjectizer 5.5.9What's new in SObjectizer 5.5.9
What's new in SObjectizer 5.5.9Yauheni Akhotnikau
 
Baltimore MuleSoft Meetup #8
Baltimore MuleSoft Meetup #8Baltimore MuleSoft Meetup #8
Baltimore MuleSoft Meetup #8ManjuKumara GH
 
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...Lucidworks
 
Q3 2019 EC and Platform Quick Preview by Deloitte Germany
Q3 2019 EC and Platform Quick Preview by Deloitte GermanyQ3 2019 EC and Platform Quick Preview by Deloitte Germany
Q3 2019 EC and Platform Quick Preview by Deloitte GermanyChristoph Pohl
 
Salesforce Spring'15 release overview
Salesforce Spring'15 release overviewSalesforce Spring'15 release overview
Salesforce Spring'15 release overviewRakesh Gupta
 
Informatica Online Training
Informatica Online Training Informatica Online Training
Informatica Online Training saikirancrs
 
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...pd7.group
 
3 Ways to Get Started with a React App in 2024.pdf
3 Ways to Get Started with a React App in 2024.pdf3 Ways to Get Started with a React App in 2024.pdf
3 Ways to Get Started with a React App in 2024.pdfBOSC Tech Labs
 
Quick Preview: SuccessFactors Q3 - EC & Platform
Quick Preview: SuccessFactors Q3 - EC & PlatformQuick Preview: SuccessFactors Q3 - EC & Platform
Quick Preview: SuccessFactors Q3 - EC & PlatformChristoph Pohl
 
Salesforce Spring 14 Release Developer Overview
Salesforce Spring 14 Release Developer OverviewSalesforce Spring 14 Release Developer Overview
Salesforce Spring 14 Release Developer OverviewRoy Gilad
 
127556030 bisp-informatica-question-collections
127556030 bisp-informatica-question-collections127556030 bisp-informatica-question-collections
127556030 bisp-informatica-question-collectionsAmit Sharma
 
Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Andrey Karpov
 
In Mind Cloud - Product Release - 2005
In Mind Cloud - Product Release - 2005In Mind Cloud - Product Release - 2005
In Mind Cloud - Product Release - 2005In Mind Cloud
 
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & A
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & AIBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & A
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & ASenturus
 

Similaire à What's new in SObjectizer v5.5.8 (20)

What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)
 
What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)
 
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersDive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
 
What's new in SObjectizer 5.5.9
What's new in SObjectizer 5.5.9What's new in SObjectizer 5.5.9
What's new in SObjectizer 5.5.9
 
Baltimore MuleSoft Meetup #8
Baltimore MuleSoft Meetup #8Baltimore MuleSoft Meetup #8
Baltimore MuleSoft Meetup #8
 
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...
Learning to Rank: From Theory to Production - Malvina Josephidou & Diego Cecc...
 
Q3 2019 EC and Platform Quick Preview by Deloitte Germany
Q3 2019 EC and Platform Quick Preview by Deloitte GermanyQ3 2019 EC and Platform Quick Preview by Deloitte Germany
Q3 2019 EC and Platform Quick Preview by Deloitte Germany
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Salesforce Spring'15 release overview
Salesforce Spring'15 release overviewSalesforce Spring'15 release overview
Salesforce Spring'15 release overview
 
Informatica Online Training
Informatica Online Training Informatica Online Training
Informatica Online Training
 
Git Best Practices.pptx
Git Best Practices.pptxGit Best Practices.pptx
Git Best Practices.pptx
 
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...
Requirements endlich 'richtig': Moderne Requirements-Tools erfolgreich einfüh...
 
3 Ways to Get Started with a React App in 2024.pdf
3 Ways to Get Started with a React App in 2024.pdf3 Ways to Get Started with a React App in 2024.pdf
3 Ways to Get Started with a React App in 2024.pdf
 
Quick Preview: SuccessFactors Q3 - EC & Platform
Quick Preview: SuccessFactors Q3 - EC & PlatformQuick Preview: SuccessFactors Q3 - EC & Platform
Quick Preview: SuccessFactors Q3 - EC & Platform
 
Salesforce Spring 14 Release Developer Overview
Salesforce Spring 14 Release Developer OverviewSalesforce Spring 14 Release Developer Overview
Salesforce Spring 14 Release Developer Overview
 
127556030 bisp-informatica-question-collections
127556030 bisp-informatica-question-collections127556030 bisp-informatica-question-collections
127556030 bisp-informatica-question-collections
 
Ab ap faq
Ab ap faqAb ap faq
Ab ap faq
 
Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#
 
In Mind Cloud - Product Release - 2005
In Mind Cloud - Product Release - 2005In Mind Cloud - Product Release - 2005
In Mind Cloud - Product Release - 2005
 
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & A
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & AIBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & A
IBM Cognos Report Studio Version 10 Tips and Tricks – Webinar Q & A
 

Plus de Yauheni Akhotnikau

arataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world examplearataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world exampleYauheni Akhotnikau
 
Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Yauheni Akhotnikau
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...Yauheni Akhotnikau
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Yauheni Akhotnikau
 
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Yauheni Akhotnikau
 
Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Yauheni Akhotnikau
 
25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My EyesYauheni Akhotnikau
 
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allGECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allYauheni Akhotnikau
 
Dive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesDive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesYauheni Akhotnikau
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Yauheni Akhotnikau
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Yauheni Akhotnikau
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Yauheni Akhotnikau
 
Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Yauheni Akhotnikau
 
Погружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьПогружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьYauheni Akhotnikau
 

Plus de Yauheni Akhotnikau (15)

arataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world examplearataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world example
 
Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
 
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
 
Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?
 
25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes
 
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allGECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
 
Dive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesDive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable Messages
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 
Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?
 
Погружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьПогружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная часть
 
Обзор SObjectizer 5.5
Обзор SObjectizer 5.5Обзор SObjectizer 5.5
Обзор SObjectizer 5.5
 

Dernier

How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Dernier (20)

How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 

What's new in SObjectizer v5.5.8

  • 1. What’s new in SObjectizer-5.5.8 SObjectizer Team, Aug 2015 A Short Overview
  • 2. There are several new features in SObjectizer v.5.5.8. They can be divided into two groups: ● agent’s priorities and three new dispatchers with priorities support, ● simplification of working with ad-hoc agents. This presentation briefly describes them. SObjectizer Team, Aug 2015
  • 3. Agent’s priorities and new dispatchers SObjectizer Team, Aug 2015
  • 4. Since v.5.5.8 every agent has a priority. Priority is just an optional mark for dispatchers. Some dispatchers can use this mark to do some specific event processing with respect to agent’s priorities. Some dispatchers do not use this mark (all old dispatchers like one_thread or thread_pool ignore priorities). SObjectizer Team, Aug 2015
  • 5. Only eight priorities are available. Priorities are given as enumeration so_5::priority_t with members like p0, ..., p7. Priority so_5::priority_t::p0 is the lowest. Priority so_5::priority_t::p7 is the highest. SObjectizer Team, Aug 2015
  • 6. Priority can be specified during agent construction via context_t object: class my_agent : public so_5::rt::agent_t { public : my_agent( context_t ctx ) : so_5::rt::agent_t( ctx + so_5::priority_t::p6 ) ... }; Once assigned the agent’s priority cannot be changed. By default all agents have priority so_5::priority_t::p0. SObjectizer Team, Aug 2015
  • 7. Old dispatchers, like one_thread, active_obj, active_group, thread_pool and adv_thread_pool do not support agent’s priorities. It means that those dispatchers will ignore priorities of agents during events processing. But there are three new dispatchers which understand agent’ s priorities and implement different events handling policies. SObjectizer Team, Aug 2015
  • 8. New dispatchers are divided into two groups: 1. prio_one_thread. 2. prio_dedicated_threads. SObjectizer Team, Aug 2015
  • 9. Group prio_one_thread consists of two dispatchers. They do processing of events of all priorities on the same working thread. Those dispatchers are defined inside so_5::disp:: prio_one_thread namespace. SObjectizer Team, Aug 2015
  • 10. Dispatcher prio_one_thread::strictly_ordered maintains event queue where all events are strictly ordered from highest priority to lowest. An event with lower priority cannot be handled if there are some events with higher priorities. Events with the same priority are ordered in chronological order. SObjectizer Team, Aug 2015
  • 11. Dispatcher prio_one_thread::queued_round_robin maintains several event queues: one for every priority. This dispatcher handles no more than Q7 events of priority p7, then no more than Q6 events of priority p6 and so on. Values of Q7, Q6, …, Q0 can be configured during creation of dispatcher instance. SObjectizer Team, Aug 2015
  • 12. Group prio_dedicated_threads consists of just one dispatcher. This dispatcher creates a dedicated thread for every priority. It means that there are eight working threads and events with different priorities are handled on different threads. This dispatcher is defined inside so_5::disp:: prio_dedicated_threads::one_per_prio namespace. SObjectizer Team, Aug 2015
  • 13. Different priority-respected dispatchers can be used in different circumstances. SObjectizer Team, Aug 2015
  • 14. prio_one_thread::strictly_ordered dispatcher can be used when there is a need to handle some event as soon as possible. For example, agent task_processor with priority p0 handles messages task_requests. Another agent, processor_config with priority p1 handles message new_config with new parameters for task processing. SObjectizer Team, Aug 2015
  • 15. Agents task_processor and processor_config could share some common data (like configuration parameters block). They can access and modify that shared data without the need of data synchronization because they work on the same working thread. SObjectizer Team, Aug 2015
  • 16. prio_one_thread::queued_round_robin dispatcher can be used when it is necessary to ensure progress in handling requests with different priorities. For example there could be thousands of read-data requests from data-readers and hundreds of update-data requests from data-writers. It is possible to assign p1 and quote 100 for agents for serving read-data requests. Agents for serving update-data request could have p0 and quote 10. SObjectizer Team, Aug 2015
  • 17. prio_dedicated_threads::one_per_prio dispatcher can be used when it is necessary to provide different context for different types of work. For example there could be very heavyweight requests like image transformation and very lightweight requests like asking image’s metadata. Lightweight requests could be handled by agents with higher priorities and heavyweight request -- by agents with lower priorities. SObjectizer Team, Aug 2015
  • 18. More detailed information about agent’s priorities and three new dispatcher can be found in Project’s Wiki. There are also three new examples in SObjectizer distribution: machine_control, news_board and prio_work_stealing. They show usage of new dispatchers. SObjectizer Team, Aug 2015
  • 19. Simplification of work with ad-hoc agents SObjectizer Team, Aug 2015
  • 20. There are several small improvements in work with ad-hoc agents. But the total effect of them is a significant simplification of ad-hoc agents usage. SObjectizer Team, Aug 2015
  • 21. It is possible to specify agent_context for ad-hoc agent. It allows to assign not only a priority for ad-hoc agent but also other stuff like message limits: env.introduce_coop( []( so_5::rt::agent_coop_t & coop ) { auto a = coop.define_agent( coop.make_agent_context() // Priority for ad-hoc agent. + so_5::priority_t::p7 // Message limits. + so_5::rt::agent_t::limit_then_drop< get_status >( 1 ) + so_5::rt::agent_t::limit_then_abort< task_request >( 1000 ) ); ... } ); SObjectizer Team, Aug 2015
  • 22. Also it is possible to use ad-hoc agent proxy instead of ad- hoc agent’s direct mbox. For example, in agent subscription: auto a = coop.define_agent(); // v.5.5.8 way: a.event< get_status >( a, []{...} ); // Pre v.5.5.8 way: a.event< get_status >( a.direct_mbox(), []{...} ); SObjectizer Team, Aug 2015
  • 23. Or for messages sending: using namespace std::chrono; auto a = coop.define_agent(); // v.5.5.8 way: so_5::sent_to_agent< get_status >( a ); so_5::send_delayed_to_agent< get_status >( a, milliseconds... ); so_5::send_periodic_to_agent< get_status >( a, milliseconds... ); // Pre v.5.5.8 way: so_5::send_to_agent< get_status >( a.direct_mbox() ); so_5::send_delayed_to_agent< get_status >( a.direct_mbox(), milliseconds... ); so_5::send_periodic_to_agent< get_status >( a.direct_mbox(), milliseconds... ); SObjectizer Team, Aug 2015
  • 24. Creation of children coops simplified. Reference to agent_coop_t object can be used instead of the coop name. env.introduce_coop( []( so_5::rt::agent_coop_t & parent ) { parent.define_agent() .on_start( [&parent]{ parent.environment().introduce_child_coop( parent, []( so_5::rt::agent_coop_t & child ) { child.define_agent()... } ); ... } ); ... } ); SObjectizer Team, Aug 2015
  • 25. New methods for coop deregistration are added to agent_coop_t: env.introduce_coop( []( so_5::rt::agent_coop_t & coop ) { coop.define_agent() .event< finish_work >( some_mbox, [&coop] { // v.5.5.8 way: coop.deregister_normally(); // Pre v.5.5.8 way: coop.environment().deregister_coop( coop.query_coop_name(), so_5::rt::dereg_reason::normal ); } ) ... } ); SObjectizer Team, Aug 2015
  • 26. The full list of changes in v.5.5.8 with more deep explanations can be found in the corresponding section of Project’s Wiki. SObjectizer Team, Aug 2015
  • 27. Additional Information: Project’s home: http://sourceforge.net/projects/sobjectizer Documentation: http://sourceforge.net/p/sobjectizer/wiki/ Forum: http://sourceforge.net/p/sobjectizer/discussion/ Google-group: https://groups.google.com/forum/#!forum/sobjectizer GitHub mirror: https://github.com/masterspline/SObjectizer