6 ms·
I primarily write c# for a living. What's wrong with async await in kotlin? I'd struggle to live without it in c#.
by bennysonething 4y ago
I primarily write c# for a living. What's wrong with async await in kotlin? I'd struggle to live without it in c#.
- pulse7 4y agoFunction coloring
- andix 4y agoAsync/await doesn’t change anything there. It just makes it easier to deal with.
- justoreply 4y agoWith the new thread model in java (project Loom) you don't need function coloring
- andix 4y agoI don't know the details. But a synchronous function returns a value and an async function returns something promise-like (it completes at some point and returns a value or an error). You can always call something async synchronously (by waiting for finishing). Or something synchronous in an async way (by putting it onto another thread). But there is no way to completely remove this fact from the eyes of the programmer. async/await is one of the ways to make it easier to read or write.
- nlitened 4y agoAsync/await is extra syntax and one more function color which you have to keep in mind, while being just a workaround for expensive threads. Recent Java has just made threads cheap, so async concurrency is much simpler and more consistent with existing libraries and APIs.
- pharmakom 4y agoAn Async<T> is not a T whether you have the monadic sugar or not. Why make life more difficult when you can have code that reads linearly?
- joe_fishfish 4y agoCheap threads are fine if you’re in a server environment, and you need to spin up a large number of short lived parallel jobs. It’s not hugely helpful for a UI-bound application which occasionally needs to move some work into a background thread to cut down on UI jank. Kotlin’s suspending function syntax effectively lets you know which operations are going to (potentially) take a while, so you can make sure the UI thread isn’t blocked, and also make sure you’re communicating to the user that something is happening.
- kasperni 4y agoCustom schedulers are coming later with Project Loom. Should be fairly easy to create something where particular threads could have a higher/lower priority.
- nlitened 4y agoIf I understand your point correctly, you say that suspend keyword gives you a hint for which functions are long running, so that you run them in a background thread. I think that’s a very flawed assumption. Some IO operations are pretty fast, like reading a local filesystem, and can be done in the UI thread, while some heavy non-async functions are accidentally O(n^2), and freeze your IO thread. And if you say that “of course you should know what you’re doing”, then I think that suspend syntax just adds extra complexity without much semantic benefit.