<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Async on 7sharp9</title><link>https://7sharp9.github.io/tags/async/</link><description>Recent content in Async on 7sharp9</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>7sharp9@mail.com (Dave Thomas)</managingEditor><webMaster>7sharp9@mail.com (Dave Thomas)</webMaster><copyright>© 2026 Dave Thomas</copyright><lastBuildDate>Wed, 05 Jun 2013 00:00:00 +0000</lastBuildDate><atom:link href="https://7sharp9.github.io/tags/async/index.xml" rel="self" type="application/rss+xml"/><item><title>Monster Zero - Revisited</title><link>https://7sharp9.github.io/programming/2013-06-05-monster-zero-revisited/</link><pubDate>Wed, 05 Jun 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-06-05-monster-zero-revisited/</guid><description>&lt;p&gt;&#10; &lt;figure class="img-left"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/c/ce/KingGhidorah.jpg"&gt;&#10; &lt;/figure&gt;&#10;&#10;&lt;br&gt;&#10;This creature is capable of tremendous destruction due to it&amp;rsquo;s size, flight &lt;em&gt;(with the creature&amp;rsquo;s wings also generating hurricane strength winds)&lt;/em&gt; and possesses several breath weapons &lt;em&gt;(e.g., heat and energy)&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;What am I talking about here? Maybe it&amp;rsquo;s &lt;a href="http://en.wikipedia.org/wiki/King_Ghidorah" target="_blank" rel="noreferrer"&gt;Monster Zero&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/King_Ghidorah" target="_blank" rel="noreferrer"&gt;King Ghidorah&lt;/a&gt; as it&amp;rsquo;s sometimes known. No it&amp;rsquo;s &lt;a href="http://msdn.microsoft.com/en-us/library/hh228603.aspx" target="_blank" rel="noreferrer"&gt;TPL Dataflow&lt;/a&gt;! &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>I node something (Bout You)</title><link>https://7sharp9.github.io/programming/2013-05-05-i-node-something/</link><pubDate>Sun, 05 May 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-05-05-i-node-something/</guid><description>&lt;h1 class="relative group"&gt;What is Edge.js?&#10; &lt;div id="what-is-edgejs" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-edgejs" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&#10; &lt;figure class="img-left sixth"&gt;&lt;img src="http://nodejs.org/images/logos/nodejs-dark.png"&gt;&#10; &lt;/figure&gt;&#10;&#10;&#10;&lt;p&gt;Unless you &lt;em&gt;live in a hole&lt;/em&gt; you have probably heard of &lt;a href="http://nodejs.org" target="_blank" rel="noreferrer"&gt;node.js&lt;/a&gt; so I&amp;rsquo;ll not bother to explain what it is or what it does. An interesting project has come to light lately, namely &lt;a href="http://tjanczuk.github.io/edge/#/" target="_blank" rel="noreferrer"&gt;Edge.js&lt;/a&gt;. The Edge.js project allows you to connect node.js with .Net.&lt;/p&gt;</description></item><item><title>iOS async revisited</title><link>https://7sharp9.github.io/programming/2013-04-18-ios-async-revisited/</link><pubDate>Thu, 18 Apr 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-04-18-ios-async-revisited/</guid><description>&lt;p&gt;In this post weare going to look as async again, but from the perspective of F#.&lt;/p&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Xamarin Evolve 2013&#10; &lt;div id="xamarin-evolve-2013" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#xamarin-evolve-2013" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&#10; &lt;figure&gt;&lt;img src="http://blog.xamarin.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-03-at-11.07.21-AM.png"&gt;&#10; &lt;/figure&gt;&#10;&#10;&lt;br&gt;&#10;I have been watching the Xamarin Evolve conference this week and it was good to see Miguel announce full support for F#. Those that follow me on twitter etc, will know that I have been doing F# for quite a while in MonoDevelop and Xamarin Studio. The new support currently entails some new project templates so that you can easily create epic new F# Apps without having to refer to my blog. While its sad that my content now falls into the archives its nice to get official support announced in such a grand fashion. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>A little bit of iOS async</title><link>https://7sharp9.github.io/programming/2013-04-16-a-little-bit-of-ios-async/</link><pubDate>Tue, 16 Apr 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-04-16-a-little-bit-of-ios-async/</guid><description>&lt;p&gt;I was going to title this post as &amp;lsquo;Now for something completely different&amp;rsquo; but felt that a little bit too &lt;a href="http://en.wiktionary.org/wiki/Pythonesque" target="_blank" rel="noreferrer"&gt;Pythonesque&lt;/a&gt;, and when I thought about it a bit it isn&amp;rsquo;t really completely just slightly different, namely C# rather than my usual F# posts. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>The Lurking Horror</title><link>https://7sharp9.github.io/programming/2012-07-15-the-lurking-horror/</link><pubDate>Sun, 15 Jul 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-07-15-the-lurking-horror/</guid><description>&lt;blockquote&gt;&lt;p&gt;Deep in the darkest depths lurks an ancient horror, when the time is right it will rise forth and leave you screaming for mercy and begging for forgiveness&amp;hellip;&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;p&gt;OK, I have a penchant for being over dramatic but in this post I am going to reveal some little known caveats in a well known and much revelled area of F#, agents aka the &lt;a href="http://msdn.microsoft.com/en-us/library/ee370357" title="Control.MailboxProcessor&amp;lt;&amp;#39;Msg&amp;gt;" target="_blank" rel="noreferrer"&gt;&lt;code&gt;MailboxProcessor&lt;/code&gt;&lt;/a&gt;. Gasp!&lt;/p&gt;</description></item><item><title>Back to the Primitive II</title><link>https://7sharp9.github.io/programming/2012-04-22-back-to-the-primitive-ii/</link><pubDate>Sun, 22 Apr 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-04-22-back-to-the-primitive-ii/</guid><description>&lt;p&gt;In the last post I discussed an asynchronous version of the &lt;code&gt;ManualResetEvent&lt;/code&gt; and as promised this time we will be looking at an&#10;asynchronous version of the &lt;code&gt;AutoResetEvent&lt;/code&gt;. I&amp;rsquo;m using &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2012/02/11/10266923.aspx" target="_blank" rel="noreferrer"&gt;Stephen Toubs post&lt;/a&gt;&#10;as reference and we will be building a version that is functional in style that maps straight into asynchronous work flows without and conversion&#10;or adaptors.&lt;/p&gt;</description></item><item><title>Back to the Primitive</title><link>https://7sharp9.github.io/programming/2012-04-12-back-to-the-primitive/</link><pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-04-12-back-to-the-primitive/</guid><description>&lt;p&gt;In this post we are going &lt;strong&gt;back to the primitive&lt;/strong&gt;. No it&amp;rsquo;s not about the same named song by Soulfly, &lt;em&gt;(which incidentally does contains F# notes)&lt;/em&gt; but a return to thread synchronisation primitives and their asynchronous counterparts.&lt;/p&gt;&#10;&lt;p&gt;We are going to be looking at an asynchronous version of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.manualresetevent.aspx" target="_blank" rel="noreferrer"&gt;ManualResetEvent&lt;/a&gt;. This was&#10;recently covered by Stephen Toub on the &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2012/02/11/10266920.aspx" target="_blank" rel="noreferrer"&gt;pfx team blog&lt;/a&gt;. We will be taking a slightly different view on&#10;this as we will be using asynchronous workflows which will give us nice idiomatic usage within F#.&lt;/p&gt;</description></item><item><title>FSharp Dataflow agents III</title><link>https://7sharp9.github.io/programming/2012-02-19-fsharp-dataflow-agents-iii/</link><pubDate>Mon, 20 Feb 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-02-19-fsharp-dataflow-agents-iii/</guid><description>&lt;p&gt;This will be the last post on rebuilding the &lt;code&gt;MailboxProcessor&lt;/code&gt; using &lt;a href="http://msdn.microsoft.com/en-us/devlabs/gg585582" target="_blank" rel="noreferrer"&gt;TDF&lt;/a&gt;,&#10;here&amp;rsquo;s a quick discussion of the missing pieces&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;First, lets start with the simple ones, these don&amp;rsquo;t really require much discussion.&lt;/p&gt;&#10;&#10;&lt;h3 class="relative group"&gt;DefaultTimeout&#10; &lt;div id="defaulttimeout" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#defaulttimeout" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;mutable&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Timeout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Infinite&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;member&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DefaultTimeout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="bp"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;This simply provides a mutable property using &lt;code&gt;Timeout.Infinite&lt;/code&gt; as a default setting.&lt;/p&gt;</description></item><item><title>F# Dataflow Agents Part II</title><link>https://7sharp9.github.io/programming/2012-01-24-fsharp-dataflow-agents-ii/</link><pubDate>Mon, 30 Jan 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-01-24-fsharp-dataflow-agents-ii/</guid><description>&lt;p&gt;Right, no messing about this time, straight to the code.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Construction&#10; &lt;div id="construction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#construction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This is pretty straight forward and I don&amp;rsquo;t want to detract from the important bits of this post, the only thing&#10;of note is the &lt;code&gt;cancellationToken&lt;/code&gt; which is initialized to a default value using the &lt;code&gt;defaultArg&lt;/code&gt; function if the&#10;optional parameter &lt;code&gt;cancellationToken&lt;/code&gt; is not supplied. The TDF construct that we to use to perform most of the hard&#10;work is &lt;code&gt;incomingMessages&lt;/code&gt; which is a &lt;code&gt;BufferBlock&amp;lt;'Msg&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>F# Dataflow Agents Part I</title><link>https://7sharp9.github.io/programming/2012-01-22-fsharp-dataflow-agents-i/</link><pubDate>Sun, 22 Jan 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-01-22-fsharp-dataflow-agents-i/</guid><description>&lt;p&gt;This is going to be a new series on using TPL Dataflow with F#. First a little bit of history and background.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;TPL Dataflows heritage and background&#10; &lt;div id="tpl-dataflows-heritage-and-background" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tpl-dataflows-heritage-and-background" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;TPL Dataflow or &lt;a href="http://msdn.microsoft.com/en-us/devlabs/gg585582" target="_blank" rel="noreferrer"&gt;(TDF)&lt;/a&gt; has been around for quite a&#10;while, it first surfaced more than a year ago as the successor to the Concurrency and Coordination Runtime&#10;&lt;a href="http://msdn.microsoft.com/en-us/library/bb648752.aspx" target="_blank" rel="noreferrer"&gt;(CCR)&lt;/a&gt; and with coming release of .Net 4.5 it will&#10;be part of the &lt;code&gt;System.Threading.Tasks.Dataflow&lt;/code&gt; namespace. Elements of the now halted project&#10;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd795202" target="_blank" rel="noreferrer"&gt;Axum&lt;/a&gt; are also present within the design of TDF.&lt;/p&gt;</description></item><item><title>Fixing a hole...</title><link>https://7sharp9.github.io/programming/2011-12-11-fixing-a-hole/</link><pubDate>Sun, 11 Dec 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-12-11-fixing-a-hole/</guid><description>&lt;p&gt;Due to popular demand&amp;hellip; well, I had a couple of requests anyway :-) Heres&#10;a post inspired by my recent encounters profiling some of the code in&#10;&lt;a href="https://github.com/fractureio/fracture" target="_blank" rel="noreferrer"&gt;Fracture-IO&lt;/a&gt;.  &lt;!-- more --&gt;I have recently been&#10;profiling the code in fracture to remove any so called low hanging fruits.&#10;During this time I also noticed an increase in memory allocation.  I&#10;remembered I had recently been experimenting in a branch using pipelets as a&#10;buffer between the send and receive stages in the Http Server, so I set up a&#10;simple test to see if pipelets were contributing to the memory allocation&#10;issues I was seeing.  Here&amp;rsquo;s the simple iteration test code I used for the&#10;memory profiling:&lt;/p&gt;</description></item><item><title>Agent based scheduling</title><link>https://7sharp9.github.io/programming/2011-07-03-agent-based-scheduling/</link><pubDate>Sun, 03 Jul 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-07-03-agent-based-scheduling/</guid><description>&lt;p&gt;One of the areas that I am very interested in is agents and I have been doing&#10;quite a lot of work in this area lately.&lt;/p&gt;&#10;&lt;p&gt;Agents can be used for a multitude of different purposes ranging from:&#10;isolated message passing, object caching, finite state machines, web crawling,&#10;and even reactive user interfaces.  One of the ideas that I have been looking&#10;into lately is agent based scheduling.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title> Agents and ObjectPools</title><link>https://7sharp9.github.io/programming/2011-06-05-agents-and-objectpools/</link><pubDate>Sun, 05 Jun 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-06-05-agents-and-objectpools/</guid><description>&lt;p&gt;Everyone knows F# agents are cool right?  Well here&amp;rsquo;s yet another example of how versatile they can be&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;There was a series of posts last April by Stephen Toub from the &lt;a href="http://blogs.msdn.com/b/pfxteam/" target="_blank" rel="noreferrer"&gt;pfxteam&lt;/a&gt; at Microsoft.  I was reading&#10;through some of the posts again the other day and thought some of the ideas presented there would make interesting projects in F# to demonstrate the&#10;flexibility and succinctness of the language.  I thought the &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2010/04/13/9990427.aspx" target="_blank" rel="noreferrer"&gt;ObjectPool&lt;/a&gt;&#10;example would make an interesting project in F# using agents aka MailboxProcessors. An ObjectPool is basically a pool of objects that have been&#10;pre-created so that you can grab one and use it, and then place it back in the pool when you&amp;rsquo;re finished.  They are useful in situations where the cost of&#10;creating object from scratch is very high or you want to cut down on allocations in the garbage collector.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 3</title><link>https://7sharp9.github.io/programming/2011-04-04-pipeline-processing-3/</link><pubDate>Mon, 04 Apr 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-04-04-pipeline-processing-3/</guid><description>&lt;p&gt;Ok so I have been offline for a while now, what with starting a new financial contract in London and not having any broadband access for a while.  I have&#10;been working on something, honest!&lt;/p&gt;&#10;&lt;p&gt;Since the last post I have been reflecting on the pipeline design and it had a distinct object orientated feel to it that I wasnt happy with, so I have&#10;amended the structure of the code and come up with the following which simplifies in some areas and expands in others&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 2</title><link>https://7sharp9.github.io/programming/2011-02-13-pipeline-processing-2/</link><pubDate>Sun, 13 Feb 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-02-13-pipeline-processing-2/</guid><description>&lt;h3 class="relative group"&gt;Welcome to pipeline processing part 2.&#10; &lt;div id="welcome-to-pipeline-processing-part-2" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-pipeline-processing-part-2" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I feel I need to backtrack slightly from the previous post, having worked with&#10;pipelines for quite some time I have the advantage of knowing all of the&#10;details that may be alluded to in these articles without being effected by any&#10;omissions I may make, obviously you guys aren&amp;rsquo;t in that position, so I&amp;rsquo;m going&#10;to try and rectify that a bit now.  If you have any queries then please leave&#10;a comment and I will try to address them in further articles. Pipelines are a&#10;simple concept but in practice there can be some caveats and things to bear in&#10;mind, sometime the whole mindset of development team can be against them&#10;unless they can see the bigger picture&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 1</title><link>https://7sharp9.github.io/programming/2011-02-01-pipeline-processing-1/</link><pubDate>Tue, 01 Feb 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-02-01-pipeline-processing-1/</guid><description>&lt;h3 class="relative group"&gt;Welcome to new series of articles on pipeline processing.&#10; &lt;div id="welcome-to-new-series-of-articles-on-pipeline-processing" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-new-series-of-articles-on-pipeline-processing" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;First up, what&amp;rsquo;s a pipeline?  Well according to &lt;a href="http://en.wikipedia.org/wiki/Pipeline_%28computing%29" target="_blank" rel="noreferrer"&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;A pipeline is a set of data processing elements connected in series, so that&#10;the output of one element is the input of the next one. The elements of a&#10;pipeline are often executed in parallel or in time-sliced fashion; in that&#10;case, some amount of buffer storage is often inserted between elements.&lt;/p&gt;</description></item><item><title>Sockets and Bockets 4</title><link>https://7sharp9.github.io/programming/2011-01-28-sockets-and-bockets-part-4/</link><pubDate>Fri, 28 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-28-sockets-and-bockets-part-4/</guid><description>&lt;h2 class="relative group"&gt;Welcome to part 4&#10; &lt;div id="welcome-to-part-4" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-4" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;If you were looking forward to some exciting new F# code this time your going&#10;to be disappointed, however if you are like me and like looking at graphs and&#10;stats and digging in deeper into the code then your going to enjoy this, lets&#10;get started&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 3</title><link>https://7sharp9.github.io/programming/2011-01-20-sockets-and-bockets-part-3/</link><pubDate>Thu, 20 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-20-sockets-and-bockets-part-3/</guid><description>&lt;h2 class="relative group"&gt;Welcome to part three!&#10; &lt;div id="welcome-to-part-three" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-three" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;As promised heres a description of the inner workings.  I&amp;rsquo;m sick to death of&#10;typing SocketAsyncEventArgs so from now on I will refer to it as SAEA.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 2</title><link>https://7sharp9.github.io/programming/2011-01-14-sockets-and-bockets-part-2/</link><pubDate>Fri, 14 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-14-sockets-and-bockets-part-2/</guid><description>&lt;h3 class="relative group"&gt;Welcome to part two&#10; &lt;div id="welcome-to-part-two" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-two" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Lets jump in at the deep end and take a look at some code&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;When you look at the method syntax for the xxxAsync methods you will notice&#10;they return a boolean value that indicates if the method completed&#10;synchronously, this means that you have to check the return value every time&#10;you use one of the methods and invoke the callback yourself if it completes&#10;synchronously.  In practice this hardly ever happens, and normally only on a&#10;send operation.  But as it is a possibility we will add module with a some&#10;extension methods in to help us out, this will make the code more readable and&#10;avoid unnecessary duplication.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 1</title><link>https://7sharp9.github.io/programming/2011-01-13-sockets-and-bockets-1/</link><pubDate>Thu, 13 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-13-sockets-and-bockets-1/</guid><description>&lt;h3 class="relative group"&gt;Welcome to part 1&#10; &lt;div id="welcome-to-part-1" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-1" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;A while back I read an interesting article by &lt;em&gt;Brian McNamara&lt;/em&gt; &lt;a href="http://lorgonblog.wordpress.com/2010/03/28/f-async-on-the-server-side/" target="_blank" rel="noreferrer"&gt;f-async-on-the-server-side&lt;/a&gt;&#10;which describes C# and F# versions of a simple asynchronous&#10;socket server, one of the driving forces behind the article was how F# can&#10;wrap the traditional asynchronous model with &lt;a href="http://msdn.microsoft.com/en-us/library/dd233250.aspx" target="_blank" rel="noreferrer"&gt;Asynchronous Workflows&lt;/a&gt;, this&#10;produces nice clean simple code compared to the C# version which uses lambda&#10;expressions, the code looks quite ugly in this style!  However thats not the&#10;end of the story, a lot of memory fragmentation can occur using the APM model&#10;when there is a high throughput, so I thought I would see if I could take this&#10;a step further&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item></channel></rss>