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