Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Third Edition

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781805127765
Edition3rd Edition
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin

Right arrow

Mutex

Mutex, also known as mutual exclusion, serves as a way to safeguard a shared state that might be accessed by multiple coroutines simultaneously.

Let’s kick off with the familiar scenario we all dread—the counter example. Imagine multiple concurrent tasks attempting to update the same counter:

var counter = 0
val jobs = List(10) {
    async(Dispatchers.Default) {
        repeat(1000) {
            counter++
        }
    }
}
jobs.awaitAll()
println(counter)

As you might have guessed, the result displayed is less than 10,000, which is quite embarrassing!

To address this issue, we can introduce a locking mechanism that ensures only one coroutine interacts with the variable at any given time, making the operation atomic. Each coroutine tries to obtain ownership of the counter. If another coroutine is already updating it, our coroutine waits patiently and then attempts to acquire the lock again. After updating, it must release the lock to allow other...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Third Edition
Published in: Apr 2024Publisher: PacktISBN-13: 9781805127765

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin