#63 CQuery: callback & counters

Ditutup
dibuka 4 tahun lalu oleh ranides · 2 komentar

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 buka kembali 4 tahun lalu issues.commit_ref_at=
ranides komentar 4 tahun lalu
Pemilik

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 komentar 4 tahun lalu
Pemilik

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?
Masuk untuk bergabung dalam percakapan ini.
Tidak ada tonggak
Tidak ada penerima
1 Peserta
Memuat...
Batal
Simpan
Belum ada konten.