Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost intrusive list volatile hook
From: Stian Zeljko Vrba (vrba_at_[hidden])
Date: 2018-11-26 06:56:08

Interrupts are like threads, except worse because you have also reentrancy issues (e.g., can IRQ A happen while the handler for IRQ A is still running, possibly outside of IRQ context). Volatile is not sufficient for several reasons, not the least because insertion/removal into a linked list is not an atomic operation. As I see it you have two choices:

  1. Introduce fine-grained locking of list nodes by customizing boost.intrusive (you have to be careful because it’s easy to end up in a deadlock due to reentrancy issues – unless you have some constraints, like IRQ levels, that can prevent this.)
  2. Use a lock-free list

You should read about how operating systems (Windows, Linux) tackle these issues.

From: Boost-users <boost-users-bounces_at_[hidden]> On Behalf Of nat ersoz via Boost-users
Sent: Sunday, November 25, 2018 18:38
To: boost-users_at_[hidden]
Cc: nat ersoz <natersoz_at_[hidden]>
Subject: [Boost-users] Boost intrusive list volatile hook

I intend to use the boost intrusive list to implement an observer pattern.

  * The list will cross interrupt boundaries; meaning one interrupt will produce the notifications and the other interrupt will observer the notifications.

  * The observer, in response to a notification, might detach itself from the list using the the hook's unlink() function.

  * I think that I will need the hook to be declared volatile in order to accommodate this.
I have a minimal code sample here:

My list hook member declaration:

    using list_hook_type = boost::intrusive::list_member_hook<



    list_hook_type hook;
My list declaration:

    using list_type =






            typename Observer<NotificationType>::list_hook_type,


If I a the volatile keyword to the list hood type, I cannot figure out how to get the list_type declaration to fit into the list template list.

Is it possible?

Thank you.

Nat Ersoz
425-417-5182 (cell)

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at