Quantcast
Channel: Is a non-blocking, single-threaded, asynchronous web server (like Node.js) possible in .NET? - Stack Overflow
Viewing all articles
Browse latest Browse all 14

Is a non-blocking, single-threaded, asynchronous web server (like Node.js) possible in .NET?

$
0
0

I was looking at this question, looking for a way to create a single-threaded, event-based nonblocking asynchronous web server in .NET.

This answer looked promising at first, by claiming that the body of the code runs in a single thread.

However, I tested this in C#:

using System;using System.IO;using System.Threading;class Program{    static void Main()    {        Console.WriteLine(Thread.CurrentThread.ManagedThreadId);        var sc = new SynchronizationContext();        SynchronizationContext.SetSynchronizationContext(sc);        {            var path = Environment.ExpandEnvironmentVariables(                @"%SystemRoot%\Notepad.exe");            var fs = new FileStream(path, FileMode.Open,                FileAccess.Read, FileShare.ReadWrite, 1024 * 4, true);            var bytes = new byte[1024];            fs.BeginRead(bytes, 0, bytes.Length, ar =>            {                sc.Post(dummy =>                {                    var res = fs.EndRead(ar);                    // Are we in the same thread?                    Console.WriteLine(Thread.CurrentThread.ManagedThreadId);                }, null);            }, null);        }        Thread.Sleep(100);    }}

And the result was:

1
5

So it seems like, contrary to the answer, the thread initiating the read and the thread ending the read are not the same.

So now my question is, how do you to achieve a single-threaded, event-based nonblocking asynchronous web server in .NET?


Viewing all articles
Browse latest Browse all 14

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>