<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Concurrency on Karpoke - Just Another Blog</title><link>http://karpoke.ignaciocano.com/tags/concurrency/</link><description>Recent content in Concurrency on Karpoke - Just Another Blog</description><generator>Hugo -- 0.167.0</generator><language>es</language><lastBuildDate>Sun, 26 Sep 2021 10:16:28 +0100</lastBuildDate><atom:link href="http://karpoke.ignaciocano.com/tags/concurrency/index.xml" rel="self" type="application/rss+xml"/><item><title>What is multithreading?</title><link>http://karpoke.ignaciocano.com/2021/09/26/what-is-multithreading/</link><pubDate>Sun, 26 Sep 2021 10:16:28 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2021/09/26/what-is-multithreading/</guid><description>&lt;blockquote&gt;
&lt;p&gt;What is multithreading? Multithreading is a CPU feature which allows
creation and&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;» DEV Community | &lt;a href="https://dev.to/lomas/what-is-multithreading-37jg"&gt;dev.to&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Distributed Systems Pattern: Singular Update Queue</title><link>http://karpoke.ignaciocano.com/2020/08/29/distributed-systems-pattern-singular-update-queue/</link><pubDate>Sat, 29 Aug 2020 19:59:21 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2020/08/29/distributed-systems-pattern-singular-update-queue/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Use a single thread to process requests asynchronously to maintain order
without blocking the caller.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;» martinfowler.com | &lt;a href="https://martinfowler.com/articles/patterns-of-distributed-systems/singular-update-queue.html"&gt;martinfowler.com&lt;/a&gt;&lt;/p&gt;</description></item><item><title>An Introduction to Lock-Free Programming</title><link>http://karpoke.ignaciocano.com/2012/06/27/an-introduction-to-lock-free-programming/</link><pubDate>Wed, 27 Jun 2012 23:58:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/27/an-introduction-to-lock-free-programming/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Lock-free programming is a challenge, not just because of the
complexity of the task itself, but because of how difficult it can be
to penetrate the subject in the first place.
I was fortunate in that my first introduction to lock-free (also
known as lockless) programming was Bruce Dawson’s excellent and
comprehensive white paper, Lockless Programming Considerations. And
like many, I’ve had the occasion to put Bruce’s advice into practice
developing and debugging lock-free code on platforms such as the Xbox
360.
Since then, a lot of good material has been written, ranging from
abstract theory and proofs of correctness to practical examples and
hardware details. I’ll leave a list of references in the footnotes. At
times, the information in one source may appear orthogonal to other
sources: For instance, some material assumes sequential consistency,
and thus sidesteps the memory ordering issues which typically plague
lock-free C/C++ code. The new C++11 atomic library standard throws
another wrench into the works, challenging the way many of us express
lock-free algorithms.
In this post, I’d like to re-introduce lock-free programming, first
by defining it, then by distilling most of the information down to a
few key concepts. I’ll show how those concepts relate to one another
using flowcharts, then we’ll dip our toes into the details a little
bit. At a minimum, any programmer who dives into lock-free programming
should already understand how to write correct multithreaded code
using mutexes, and other high-level synchronization objects such as
semaphores and events.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>