Experimental one-way messaging through shared memory. Utilizes more resources but has way lower latency in compared to unix socket. On my machine unix latency is around 90μs meanwhile in tests its within few.
memory structure:
uint32 uint32
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender Counter | Recv Counter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MsgSize + CodeSize | Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| MESSAGE |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
run test in processes as two seperate go instances
cd ./tests
go run test.go --id=1 --server
go run test.go --id=2