<?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;
 &lt;figure class="img-left"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/c/ce/KingGhidorah.jpg"&gt;
 &lt;/figure&gt;

&lt;br&gt;
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;
&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?
 &lt;div id="what-is-edgejs" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-edgejs" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;

 &lt;figure class="img-left sixth"&gt;&lt;img src="http://nodejs.org/images/logos/nodejs-dark.png"&gt;
 &lt;/figure&gt;


&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;

&lt;h3 class="relative group"&gt;Xamarin Evolve 2013
 &lt;div id="xamarin-evolve-2013" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#xamarin-evolve-2013" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;
 &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;
 &lt;/figure&gt;

&lt;br&gt;
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;
&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
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;
as reference and we will be building a version that is functional in style that maps straight into asynchronous work flows without and conversion
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;
&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
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
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;,
here&amp;rsquo;s a quick discussion of the missing pieces&amp;hellip;&lt;/p&gt;
&lt;p&gt;First, lets start with the simple ones, these don&amp;rsquo;t really require much discussion.&lt;/p&gt;

&lt;h3 class="relative group"&gt;DefaultTimeout
 &lt;div id="defaulttimeout" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#defaulttimeout" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;let mutable defaultTimeout = Timeout.Infinite
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;member x.DefaultTimeout
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; with get() = defaultTimeout
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; and set(value) = defaultTimeout &amp;lt;- value&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&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;

&lt;h2 class="relative group"&gt;Construction
 &lt;div id="construction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#construction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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
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
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
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;

&lt;h2 class="relative group"&gt;TPL Dataflows heritage and background
 &lt;div id="tpl-dataflows-heritage-and-background" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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
while, it first surfaced more than a year ago as the successor to the Concurrency and Coordination Runtime
&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
be part of the &lt;code&gt;System.Threading.Tasks.Dataflow&lt;/code&gt; namespace. Elements of the now halted project
&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
a post inspired by my recent encounters profiling some of the code in
&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
profiling the code in fracture to remove any so called low hanging fruits.
During this time I also noticed an increase in memory allocation.  I
remembered I had recently been experimenting in a branch using pipelets as a
buffer between the send and receive stages in the Http Server, so I set up a
simple test to see if pipelets were contributing to the memory allocation
issues I was seeing.  Here&amp;rsquo;s the simple iteration test code I used for the
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
quite a lot of work in this area lately.&lt;/p&gt;
&lt;p&gt;Agents can be used for a multitude of different purposes ranging from:
isolated message passing, object caching, finite state machines, web crawling,
and even reactive user interfaces.  One of the ideas that I have been looking
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;
&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
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
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;
example would make an interesting project in F# using agents aka MailboxProcessors. An ObjectPool is basically a pool of objects that have been
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
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
been working on something, honest!&lt;/p&gt;
&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
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.
 &lt;div id="welcome-to-pipeline-processing-part-2" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I feel I need to backtrack slightly from the previous post, having worked with
pipelines for quite some time I have the advantage of knowing all of the
details that may be alluded to in these articles without being effected by any
omissions I may make, obviously you guys aren&amp;rsquo;t in that position, so I&amp;rsquo;m going
to try and rectify that a bit now.  If you have any queries then please leave
a comment and I will try to address them in further articles. Pipelines are a
simple concept but in practice there can be some caveats and things to bear in
mind, sometime the whole mindset of development team can be against them
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.
 &lt;div id="welcome-to-new-series-of-articles-on-pipeline-processing" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h3&gt;
&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;
&lt;blockquote&gt;&lt;p&gt;A pipeline is a set of data processing elements connected in series, so that
the output of one element is the input of the next one. The elements of a
pipeline are often executed in parallel or in time-sliced fashion; in that
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
 &lt;div id="welcome-to-part-4" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-4" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;If you were looking forward to some exciting new F# code this time your going
to be disappointed, however if you are like me and like looking at graphs and
stats and digging in deeper into the code then your going to enjoy this, lets
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!
 &lt;div id="welcome-to-part-three" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-three" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;As promised heres a description of the inner workings.  I&amp;rsquo;m sick to death of
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
 &lt;div id="welcome-to-part-two" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-two" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Lets jump in at the deep end and take a look at some code&amp;hellip;&lt;/p&gt;
&lt;p&gt;When you look at the method syntax for the xxxAsync methods you will notice
they return a boolean value that indicates if the method completed
synchronously, this means that you have to check the return value every time
you use one of the methods and invoke the callback yourself if it completes
synchronously.  In practice this hardly ever happens, and normally only on a
send operation.  But as it is a possibility we will add module with a some
extension methods in to help us out, this will make the code more readable and
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
 &lt;div id="welcome-to-part-1" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-1" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&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;
which describes C# and F# versions of a simple asynchronous
socket server, one of the driving forces behind the article was how F# can
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
produces nice clean simple code compared to the C# version which uses lambda
expressions, the code looks quite ugly in this style!  However thats not the
end of the story, a lot of memory fragmentation can occur using the APM model
when there is a high throughput, so I thought I would see if I could take this
a step further&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item></channel></rss>