We’re here to help you

Menu

Retrospect on Learning Goals

In the introduction of this tutorial, the following learning goals were mentioned:

  • Understand what ‘blocking’ allows you to do in Dezyne

  • Simplify an ‘external’ implementation with usage of ‘blocking’

  • Identify when ‘blocking’ may be used and when it may not be used

  • Reason about design decisions when using the ‘blocking’ keyword

In this chapter, you will find a quick summary on each of the learning goals and where they were discussed in the tutorial.

Understand what ‘blocking’ allows you to do in Dezyne

Using ‘blocking’, it becomes possible to describe certain asynchronous behaviour patterns as if they were synchronous. By hiding the asynchronicity of a process, components higher up in a system are simplified. This was discussed in Chapter 1: What can ‘blocking’ be used for?

Simplify an ‘external’ implementation with usage of ‘blocking’

In Changing RobustTimer to provide a synchronous Timer interface, changes were made to RobustTimer to provide a blocking synchronous cancel event. This event starts an asynchronous process in RobustTimer where the end of the process signals the return of the ‘blocking’ event.

Identify when ‘blocking’ may be used and when it may not be used

Following an analysis of a ‘blocking’ process in Runtime behaviour, some hard constraints were identified in Implications of ‘blocking’ for Dezyne applications: the main thread must not suffer from being blocked and the target platform must support some way to provide activity when the main thread is blocked.

Reason about design decisions when using the ‘blocking’ keyword

Besides hard constraints, Implications of ‘blocking’ for Dezyne applications also provides example situations where the usage of ‘blocking’ may or may not be warranted. Considerations to take into account are whether the period of asynchronicity can be used for other purposes. Due to contagious asynchronicity, other components may be simplified by usage of ‘blocking’, which could have implications for the layer of a system you wish to implement ‘blocking’ in.

If you have questions that weren’t answered by this Guide,
let our support team help you out.

Enjoy this article? Don't forget to share.