Skynet 1M Fiber microbenchmark in D
Nordlöw
per.nordlow at gmail.com
Wed Oct 18 11:34:57 UTC 2017
On Wednesday, 18 October 2017 at 11:04:10 UTC, Biotronic wrote:
> On Wednesday, 18 October 2017 at 11:01:56 UTC, Per Nordlöw
> wrote:
>> On Wednesday, 18 October 2017 at 09:01:30 UTC, Per Nordlöw
>> wrote:
>>> Creates an actor (goroutine, whatever), which spawns 10 new
>>> actors, each of them spawns 10 more actors, etc. until one
>>> million actors are created on the final level. Then, each of
>>> them returns back its ordinal number (from 0 to 999999),
>>> which are summed on the previous level and sent back
>>> upstream, until reaching the root actor. (The answer should
>>> be 499999500000).
>>>
>>> See also: https://github.com/atemerev/skynet
>>
>> I Fibers aren't supposed to take any parameters how are we
>> supposed to pass values to it during creation?
>
> class MyFiber : Fiber {
> this(int arguments, string go, float here) {
> super(&run);
> // Save arguments somewhere
> }
> void run() {
> // Use arguments here.
> }
> }
>
> --
> Biotronic
Thanks, I figured that out myself after a while ;)
Another thing...how should the synchronization between the fibers
figure out when the total number of fibers have reached one
million?...via an atomic counter fed by reference to the
constructor...or are there better ways? Because I do need an
atomic reference counter here, right?
And how do I parallelize this over multiple worker threads?
AFAICT fibers are by default all spawned in the same main thread,
right?
More information about the Digitalmars-d-learn
mailing list