Idea: no mutex, no CAS, only one direction queues without any locks.

My prototype (https://github.com/nin-jin/go.d) is up to 10x faster than std.concurrency.send/receive

---
writers =512
readers =1
std.concurency milliseconds=1313
jin.go milliseconds=113
---

Realization:

Queue! - buffered static typed channel. One and only one thread can push data to queue, and one and only one can take data from queue. Thread blocks when he takes from empty queue and pushes to fulfilled queue.

Queues! - list of queues with round robin balancing

go! - starts new thread, in future i want to implement something like goroutine, but i do not understand how yet.

I need some good advice, i am newbie in D :-)

Problems:

For blocking thread i use loop with Thread.sleep - this is bad decision IMHO.

On my system i can create only up to 1000 threads without errors. Fibers from core.thread or Tasks from std.parallelism potentiaдly can resolve this problem, but how to integrate their gracefully.

API of jin-go can be better?

Which dub modules can help me?

Reply via email to