Szymon Kulec
| Name | LOAD-LOAD | L-S | S-S | S-L | 
|---|---|---|---|---|
| Full barrier (lock) | ||||
| Aquire fence | ✔ | ✔ | ||
| Release fence | ✔ | ✔ | ||
| No fence | ✔ | ✔ | ✔ | ✔ | 
| 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 128 | 
| head:0 | tail:0 | ||||||||
| 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 128 | 
| head:0 | tail:0tail:16 | ||||||||
| 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 128 | 
| -8|5 | head:0 | tail:16 | |||||||
| 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 128 | 
| -8|5 8|5 | ..data.. | head:0 | tail:16 | ||||||
| Head | Tail | Length | |
|---|---|---|---|
| Writer | Volatile.Read | Interlocked.Add | Volatile.Write x2 | 
| Reader | Volatile.Write | - | Volatile.Read | 
public interface IBus
{
    void Publish<TMessage>(ref TMessage msg) 
        where TMessage : struct;
    void Send<TMessage>(ref TMessage msg, 
        ActorId receiver) 
        where TMessage : struct;
}
						
					Edsger W. Dijkstra
Szymon Kulec