#63 CQuery: callback & counters

Gesloten
4 jaren geleden werd geopend door ranides · 2 opmerkingen

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 reageerde 4 jaren geleden
Eigenaar

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 reageerde 4 jaren geleden
Eigenaar

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?
Sign in to join this conversation.
Geen mijlpaal
Geen verantwoordelijke
1 deelnemers
Laden...
Annuleren
Opslaan
Er is nog geen inhoud.