#63 CQuery: callback & counters

Stängd
öppnade 4 år sedan av ranides · 2 kommentarer
ranides kommenterad 4 år sedan

Replace int[]{0} with AtomicInteger / Counter

Replace boolean[]{false} with AtomicBool / Terminator / Continuator

Those counter and terminators should be created by CQuery internal protected methods. Those methods will return "just wrapper", non-blocking wrapper or synchronized wrapper (which will make parallel query sequential).

...

No, we don't need protected methods because every implementation of each, while etc will use different iteration strategy, especially parallel methods could use some form of non-blocking but splittable counters.

For example, it is trivial to create as many counters as threads and initialize with correct offset, when we split array processing.

Replace `int[]{0}` with AtomicInteger / Counter Replace `boolean[]{false}` with AtomicBool / Terminator / Continuator Those counter and terminators should be created by CQuery internal protected methods. Those methods will return "just wrapper", non-blocking wrapper or synchronized wrapper (which will make parallel query sequential). ... No, we don't need protected methods because every implementation of `each`, `while` etc will use different iteration strategy, especially parallel methods could use some form of non-blocking but splittable counters. For example, it is trivial to create as many counters as threads and initialize with correct offset, when we split array processing.
ranides återöppnade 4 år sedan
ranides kommenterad 4 år sedan
Ägare

reopened. prefer something like zip method rather than atomic counters

https://stackoverflow.com/questions/17640754/zipping-streams-using-jdk8-with-lambda-java-util-stream-streams-zip

Essentially, the point is to not use stream directly, but use stream.spliterator and then implement loops manually.

reopened. prefer something like `zip` method rather than atomic counters https://stackoverflow.com/questions/17640754/zipping-streams-using-jdk8-with-lambda-java-util-stream-streams-zip **Essentially, the point is to not use stream directly, but use `stream.spliterator` and then implement loops manually.**
ranides kommenterad 4 år sedan
Ägare

But what to do if we know, that spliterator.forEachRemaining is very efficient?

But what to do if we know, that `spliterator.forEachRemaining` is very efficient?
Logga in för att delta i denna konversation.
Ingen Milsten
Ingen förvärvare
1 Deltagare
Laddar...
Avbryt
Spara
Det finns inget innehåll än.