<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Data Races on AI VOID</title><link>https://ai-blog.noorshomelab.dev/tags/data-races/</link><description>Recent content in Data Races on AI VOID</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 26 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ai-blog.noorshomelab.dev/tags/data-races/index.xml" rel="self" type="application/rss+xml"/><item><title>Chapter 15: Actors &amp;amp; Structured Concurrency</title><link>https://ai-blog.noorshomelab.dev/mastering-swift-2026/15-actors-structured-concurrency/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/mastering-swift-2026/15-actors-structured-concurrency/</guid><description>&lt;h2 id="chapter-15-actors--structured-concurrency"&gt;Chapter 15: Actors &amp;amp; Structured Concurrency&lt;/h2&gt;
&lt;p&gt;Welcome back, intrepid Swift explorer! In previous chapters, we laid the groundwork for asynchronous programming with &lt;code&gt;async/await&lt;/code&gt;, learning how to perform operations that take time without blocking our app&amp;rsquo;s main thread. That was a huge step forward in writing more responsive and efficient code!&lt;/p&gt;
&lt;p&gt;Now, we&amp;rsquo;re going to tackle one of the trickiest aspects of concurrent programming: managing shared mutable state. Imagine multiple parts of your program trying to update the same piece of data at the same time. Chaos, right? That&amp;rsquo;s where &lt;strong&gt;Actors&lt;/strong&gt; come in, providing a safe and elegant solution to this problem. We&amp;rsquo;ll also dive deeper into &lt;strong&gt;Structured Concurrency&lt;/strong&gt;, learning how to organize and manage multiple asynchronous tasks in a robust, predictable way, ensuring that tasks are cancelled and errors are handled correctly.&lt;/p&gt;</description></item></channel></rss>