This chapter has covered some really important topics on how to use Kotlin to prevent common pitfalls of concurrent programming. All the different tools covered in this chapter will come in handy in different circumstances when you are writing concurrent applications. In the same way an actor is a mix of a coroutine with a channel, you can mix many of the solutions covered here to create an implementation that meets your requirements.
As mentioned at the beginning of this chapter, you shouldn't limit these tools to atomicity violation. They will help you to tackle other concurrency challenges as well.
Let's recap this chapter and the more important topics:
- Having a shared state can be a problem in concurrent code. A thread's cache and the atomicity of memory access can cause modifications coming from different threads to be lost. It can also cause the state...