Last active
September 24, 2023 16:39
-
-
Save maxweber/66faec4a2c10396cb1e5e917c89dd593 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (comment | |
| ;; Starting the REPL with `clojure -J-Djdk.tracePinnedThreads=full -J--enable-preview ...` | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (doall | |
| ;; LazySeq: | |
| (map | |
| (fn [n] | |
| (Thread/sleep 1) | |
| n) | |
| (range 1))))) | |
| ;; Thread[#30579,ForkJoinPool-1-worker-30,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval115091$fn__115092$fn__115093.invoke(NO_SOURCE_FILE:62) | |
| ;; clojure.core$map$fn__5935.invoke(core.clj:2770) | |
| ;; clojure.lang.LazySeq.sval(LazySeq.java:42) <== monitors:1 | |
| ;; clojure.lang.LazySeq.seq(LazySeq.java:51) <== monitors:1 | |
| ;; clojure.lang.RT.seq(RT.java:535) | |
| ;; clojure.core$seq_ | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| @(delay (Thread/sleep 1)))) | |
| ;; Thread[#30592,ForkJoinPool-1-worker-31,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval115420$fn__115421$fn__115422.invoke(NO_SOURCE_FILE:85) | |
| ;; clojure.lang.Delay.deref(Delay.java:42) <== monitors:1 | |
| ;; clojure.core$deref.invokeStatic(core.clj:2337) | |
| ;; clojure.core$deref.invoke(core.clj:2323) | |
| ;; user$eval115420$fn__115421.invoke(NO_SOURCE_FILE:84) | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (first | |
| (enumeration-seq | |
| (reify java.util.Enumeration | |
| (hasMoreElements [this] true) | |
| (nextElement [this] | |
| (Thread/sleep 1) | |
| true)))))) | |
| ;; Thread[#30603,ForkJoinPool-1-worker-33,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval116290$fn$reify__116292.nextElement(NO_SOURCE_FILE:111) | |
| ;; clojure.lang.EnumerationSeq.first(EnumerationSeq.java:52) <== monitors:1 | |
| ;; clojure.lang.RT.first(RT.java:692) | |
| ;; clojure.core$first__5449.invokeStatic(core.clj:55) | |
| ;; clojure.core$first__5449.invoke(core.clj:55) | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (alter-meta! (atom nil) | |
| (fn [meta] | |
| (Thread/sleep 1) | |
| meta)))) | |
| ;; Thread[#30611,ForkJoinPool-1-worker-34,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval116601$fn__116602$fn__116603.invoke(NO_SOURCE_FILE:135) | |
| ;; clojure.lang.AFn.applyToHelper(AFn.java:154) | |
| ;; clojure.lang.AFn.applyTo(AFn.java:144) | |
| ;; clojure.lang.AReference.alterMeta(AReference.java:31) <== monitors:1 | |
| ;; clojure.core$alter_meta_BANG_.invokeStatic(core.clj:2431) | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (let [a (agent {} | |
| :validator | |
| (fn [state] | |
| (Thread/sleep 1) | |
| true))] | |
| (send a inc) | |
| (Thread/sleep 1) ;; (await ...) blocks forever here | |
| (restart-agent a | |
| {})) | |
| )) | |
| ;; Thread[#31859,ForkJoinPool-1-worker-50,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval202942$fn__202943$fn__202944.invoke(NO_SOURCE_FILE:159) | |
| ;; clojure.lang.ARef.validate(ARef.java:32) | |
| ;; clojure.lang.ARef.validate(ARef.java:46) | |
| ;; clojure.lang.Agent.restart(Agent.java:212) <== monitors:1 | |
| ;; clojure.core$restart_agent.invokeStatic(core.clj:2209) | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (def v | |
| 1) | |
| (alter-var-root #'v | |
| (fn [x] | |
| (Thread/sleep 1) | |
| x)) | |
| )) | |
| ;; Thread[#31967,ForkJoinPool-1-worker-53,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval207626$fn__207627$fn__207628.invoke(NO_SOURCE_FILE:189) | |
| ;; clojure.lang.AFn.applyToHelper(AFn.java:154) | |
| ;; clojure.lang.AFn.applyTo(AFn.java:144) | |
| ;; clojure.lang.Var.alterRoot(Var.java:308) <== monitors:1 | |
| ;; clojure.core$alter_var_root.invokeStatic(core.clj:5535) | |
| (.start (Thread/ofVirtual) | |
| (fn [] | |
| (first | |
| (clojure.lang.IteratorSeq/create | |
| (reify java.util.Iterator | |
| (forEachRemaining [this action]) | |
| (hasNext [this] true) | |
| (next [this] | |
| (Thread/sleep 1) | |
| 1) | |
| (remove [this])))) | |
| )) | |
| ;; Thread[#32758,ForkJoinPool-1-worker-55,5,CarrierThreads] | |
| ;; java.base/java.lang.VirtualThread$VThreadContinuation.onPinned(VirtualThread.java:183) | |
| ;; java.base/jdk.internal.vm.Continuation.onPinned0(Continuation.java:398) | |
| ;; java.base/jdk.internal.vm.Continuation.yield0(Continuation.java:390) | |
| ;; java.base/jdk.internal.vm.Continuation.yield(Continuation.java:357) | |
| ;; java.base/java.lang.VirtualThread.yieldContinuation(VirtualThread.java:428) | |
| ;; java.base/java.lang.VirtualThread.parkNanos(VirtualThread.java:599) | |
| ;; java.base/java.lang.VirtualThread.doSleepNanos(VirtualThread.java:777) | |
| ;; java.base/java.lang.VirtualThread.sleepNanos(VirtualThread.java:750) | |
| ;; java.base/java.lang.Thread.sleep(Thread.java:470) | |
| ;; user$eval270562$fn$reify__270564.next(NO_SOURCE_FILE:217) | |
| ;; clojure.lang.IteratorSeq.first(IteratorSeq.java:50) <== monitors:1 | |
| ;; clojure.lang.RT.first(RT.java:692) | |
| ;; clojure.core$first__5449.invokeStatic(core.clj:55) | |
| ;; clojure.core$first__5449.invoke(core.clj:55) | |
| ;; user$eval270562$fn__2 | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment