Comments (2)
Yes, that's correct, once DefaultExecutor
sees that it's supposed to run some code eventually, it will just go to sleep and won't wake up until either the time comes to run that code, or some new event arrives. KEEP_ALIVE_MS
is not part of the public contract and isn't advertised anywhere, so it's just a part of our internal implementation, not something you can rely on.
If you have specific requirements for when DefaultExecutor
should finish, please share them. Without specific use cases, we'd rather not wake DefaultExecutor
up each time a task is removed from its queue: let it sleep in peace.
Also, if you are okay with relying on the internal implementation details, you can interrupt
the DefaultExecutor
so that it recognizes that it doesn't have any more work to do:
runBlocking { withTimeout(10.seconds) {} }
val time = measureTime {
arrayOfNulls<Thread>(Thread.activeCount())
.apply(Thread::enumerate)
.find { it?.name == "kotlinx.coroutines.DefaultExecutor" }!!
.apply {
interrupt()
join()
}
}
println(time)
from kotlinx.coroutines.
This came up because 9a98eab changed timeout of runTest
to 60 seconds, which caused the DefaultExecutor
thread to far outlive the lifetime of each test case and it was caught by a leaked thread detector that some of our tests used. That thread should obviously have been exempt from the detector anyway so that wasn't a real problem, but I thought that maybe this behavior was unintentional after seeing that the thread was only supposed to live for one second.
we'd rather not wake
DefaultExecutor
up each time a task is removed from its queue: let it sleep in peace.
Fair enough. I'll just consider this an implementation quirk then. No real problems here.
from kotlinx.coroutines.
Related Issues (20)
- Support `CoroutineName`, which is not propagated to child coroutines
- Sending to full Channel<Unit>(CONFLATED) is ~10x slower than sending to full Channel<Unit>(1) HOT 1
- RC: 1.4.3
- RC:1.4.3 HOT 4
- Noticeable upfront cost of Dispatchers.Default HOT 1
- Unresolved reference for kotlinx.coroutines on iOS HOT 6
- The coroutine states in the debugger are inaccurate when starts are undispatched HOT 1
- Try-finally and non-local returns - Mutex.withLock HOT 4
- java.lang.IllegalStateException: The test scheduler entered an invalid state
- sample() operator on Hot Flow makes runTest hang HOT 3
- Provide a method to group flow elements in a time window HOT 3
- UncaughtExceptionsBeforeTest: There were uncaught exceptions before the test started. HOT 2
- Callbackflow close exception misbehavior with timeout HOT 1
- CancellationException inheriting from IllegalStateException can be error prone HOT 5
- `Dispatchers.Default` is not installed in coroutine builders when there is no `ContinuationInterceptor` in native HOT 3
- [CVE-2023-2976] Vulnerability - Recommended Guava version upgrade HOT 1
- Kotlin collect flow wont work in a react-native bridge HOT 1
- Remove @ExperimentalCoroutinesApi from CancellableContinuation.resume(...) HOT 2
- kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for CancellableContinuation HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kotlinx.coroutines.