# cancellation

A cooperative computing technique for stopping asynchronous or long-running operations using cancellation tokens.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Kotlin Coroutines Cancellation and Exception Handling

DevFeed: [Kotlin Coroutines Cancellation and Exception Handling](<https://devfeed.tech/articles/kotlin-coroutines-cancellation-and-exception-handling-38659.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2026_01_11_kotlin_coroutines_cancellation_and_exception_handling/>)

Published: 2026-01-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Exception handling](<https://devfeed.tech/topics/exception-handling.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [cancellation](<https://devfeed.tech/tags/cancellation.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>)

### AI overview

This article explains why cancellation and exception handling in Kotlin coroutines are difficult, emphasizing that the concepts are distinct but coupled. It discusses the flexibility and hidden complexity of the coroutine API and introduces explanations and best practices for learning and using these mechanisms.

### Source excerpt

Cancellation and exception handling in coroutines is by far the most complex thing I've faced during my entire career. These two things are so complicated that I sometimes ask myself how people are using such a difficult-to-use framework. I read all the possible docs that I found, many different articles, video courses, and even tried to look at the code - and still, I feel that my understanding of this topic is quite bad. When reading articles, I often thought that their structure was not good and that things were not clarified in a reasonable way. Usually, articles are just a collection of examples that show how certain combinations of suspending functions or coroutine builders will work. Learning by examples is good, but they should help with understanding core concepts so that all other situations are easy to relate to what was learned.

## Temporal Ruby SDK Reaches General Availability with Rust Core and Deterministic Fiber Scheduler

DevFeed: [Temporal Ruby SDK Reaches General Availability with Rust Core and Deterministic Fiber Scheduler](<https://devfeed.tech/articles/temporal-ruby-crash-proof-fibers-36030.md>)

Original publisher: [Read original article](<https://temporal.io/blog/temporal-ruby-crash-proof-fibers>)

Author: Chad Retz

Published: 2025-10-16T00:00:00Z

Content type: article

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Code](<https://devfeed.tech/topics/code.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [announcements](<https://devfeed.tech/tags/announcements.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [fiber](<https://devfeed.tech/tags/fiber.md>), [guardrails](<https://devfeed.tech/tags/guardrails.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

Temporal Ruby is now generally available, providing Ruby developers with a native-feeling SDK for building durable software and Workflows. The article introduces its programming model and demonstrates Activities, deterministic fibers, durable timers, cancellation, and updates, while also discussing the Rust-powered implementation and execution guardrails.

### Source excerpt

Temporal Ruby SDK is GA. Build durable Ruby Workflows with native APIs, a Rust-powered core, a deterministic fiber scheduler, and guardrails for safe execution.

## Job and children awaiting in Kotlin Coroutines

DevFeed: [Job and children awaiting in Kotlin Coroutines](<https://devfeed.tech/articles/job-and-children-awaiting-in-kotlin-coroutines-39237.md>)

Original publisher: [Read original article](<https://kt.academy/article/cc-job>)

Published: 2024-07-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Job](<https://devfeed.tech/topics/job.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Structured concurrency](<https://devfeed.tech/topics/structured-concurrency.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>)

Tags: [cancellation](<https://devfeed.tech/tags/cancellation.md>), [job](<https://devfeed.tech/tags/job.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains the Kotlin Coroutines Job context. It describes how each coroutine has its own Job, how parent-child Job relationships support structured concurrency, and how Jobs enable cancellation, completion waiting, and exception handling within a coroutine scope.

### Source excerpt

What Job is and how it is the most important context responsible for structured concurrency.

## Key advantages of Kotlin Coroutines

DevFeed: [Key advantages of Kotlin Coroutines](<https://devfeed.tech/articles/key-advantages-of-kotlin-coroutines-39257.md>)

Original publisher: [Read original article](<https://kt.academy/article/coroutines-advantages>)

Published: 2024-06-10T00:00:00Z

Content type: article

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Structured concurrency](<https://devfeed.tech/topics/structured-concurrency.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Android](<https://devfeed.tech/topics/android.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>)

Tags: [cancellation](<https://devfeed.tech/tags/cancellation.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [http](<https://devfeed.tech/tags/http.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [testing](<https://devfeed.tech/tags/testing.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains the main advantages of Kotlin Coroutines: simpler imperative-style asynchronous code, structured concurrency, lighter execution than threads, cancellation, synchronization, and precise virtual-time testing. It discusses applications in Android and backend development, including Ktor.

### Source excerpt

Where Kotlin Coroutines shine and why you should use them.

## Cancellation in Kotlin Coroutines

DevFeed: [Cancellation in Kotlin Coroutines](<https://devfeed.tech/articles/cancellation-in-kotlin-coroutines-39233.md>)

Original publisher: [Read original article](<https://kt.academy/article/cc-cancellation>)

Published: 2024-06-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [application](<https://devfeed.tech/tags/application.md>), [backend](<https://devfeed.tech/tags/backend.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [thread](<https://devfeed.tech/tags/thread.md>), [websockets](<https://devfeed.tech/tags/websockets.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on cancellation in Kotlin Coroutines, explaining how cancellation propagates through coroutine hierarchies, changes coroutine state, raises cancellation exceptions at suspension points, and helps release resources in Android and backend applications.

### Source excerpt

Everything you need to know about the cancellation mechanism in Kotlin Coroutines.

## Third edition of Kotlin Coroutines: Deep Dive released with expanded exercises and revised chapters

DevFeed: [Third edition of Kotlin Coroutines: Deep Dive released with expanded exercises and revised chapters](<https://devfeed.tech/articles/the-third-edition-of-kotlin-coroutines-deep-dive-book-is-finally-ready-39262.md>)

Original publisher: [Read original article](<https://kt.academy/article/coroutines-third-release>)

Published: 2024-05-20T00:00:00Z

Content type: release

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Exception handling](<https://devfeed.tech/topics/exception-handling.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [book](<https://devfeed.tech/tags/book.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [deep](<https://devfeed.tech/tags/deep.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [release](<https://devfeed.tech/tags/release.md>), [testing](<https://devfeed.tech/tags/testing.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The third edition of the Kotlin Coroutines: Deep Dive book has been released. It adds more than 40 exercises, expands and clarifies the chapters on cancellation and exception handling, revises material on coroutine lifecycles and suspension, and adds practical examples and synchronization coverage.

### Source excerpt

Learn about the new release of the famous book about Kotlin Coroutines.

## Building advanced MVVM commands, Part 1

DevFeed: [Building advanced MVVM commands, Part 1](<https://devfeed.tech/articles/building-advanced-mvvm-commands-part-1-38403.md>)

Original publisher: [Read original article](<https://khmylov.com/2010/11/building-advanced-mvvm-commands-part-1/>)

Author: Andrew Khmylov

Published: 2010-11-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Despite the odds](<https://devfeed.tech/sources/despite-the-odds.md>)

Topics: [MVVM](<https://devfeed.tech/topics/mvvm.md>), [WPF](<https://devfeed.tech/topics/wpf.md>), [async](<https://devfeed.tech/topics/async.md>), [cancellation](<https://devfeed.tech/topics/cancellation.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [applications](<https://devfeed.tech/tags/applications.md>), [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [cancellation](<https://devfeed.tech/tags/cancellation.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [thread](<https://devfeed.tech/tags/thread.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial presents an advanced DelegateCommand implementation for WPF and Silverlight applications using the MVVM pattern. It covers asynchronous execution, command states, cancellation, progress tracking, exception handling, UI updates through Dispatcher, and helper support for property-change notifications.

### Source excerpt

If you follow the MVVM pattern while developing your WPF/Silverlight applications, then you are probably familiar with DelegateCommand (or RelayCommand, as it is called sometimes) model. In brief: it is an implementation of WPF/Silverlight ICommand that allows you to specify what the command should do by passing some delegate that performs execution logic (instead of using CommandBindings). Pretty simple, but powerful pattern. Dealing with MVVM a lot, I've build my own implementation of this pattern that lets you simplify its usage. Here are some common features, that you have to handle on your own by using classic DelegateCommand: Support for asynchronous execution (usually solved by generating additional code in ViewModel that handles async calls and free/busy indicator). Different command states (Free/Busy/Failed with exception) + UI reactions for those states. Support for execution cancellation and progress tracking (required for asynchronous commands) Before we start, I offer you to imagine a common command execution timeline. In my opinion it looks like: Initialize some data (generally, UI settings - clear collections, set some indicators,...) Perform main execution logic (can be synchronous or asynchronous) Perform some actions after execution (update UI based on execution result) And don't forget about exception handling and correct cross-thread calls for asynchronous commands (all UI changes have to be performed through Dispatcher). Let's start with a little helper class, that I called PropertyChangedNotifier. It's just a wrapper around IPropertyChangedNotifier that has OnPropertyChanged(string propertyName) method. This method raises underlying IPropertyChangedNotifier.PropertyChanged event. Also this class has VerifyPropertyName method that verifies if specified string corresponds to the actual property (this method is marked with [Conditional("DEBUG")] attribute and is only used while debugging your applications to find out possible bugs with invalid prope