Skip to content

Commit

Permalink
Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
davidfowl committed Jan 17, 2018
1 parent 692b92b commit 5e8050e
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 14 deletions.
1 change: 1 addition & 0 deletions Logging/Logging.csproj
Expand Up @@ -11,6 +11,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Serilog.AspNetCore" Version="2.1.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" />
</ItemGroup>

</Project>
4 changes: 4 additions & 0 deletions Logging/Program.cs
Expand Up @@ -15,6 +15,10 @@ public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Seq("http://localhost:5341")
.CreateLogger();

BuildWebHost(args).Run();
}

Expand Down
9 changes: 0 additions & 9 deletions Talk1Samples/Controllers/BigContentController.cs
Expand Up @@ -24,15 +24,6 @@ public Task<string> BigContentBad()
return _httpClient.GetStringAsync(_url);
}

[Route("/big-content-stillbad")]
public async Task<string> BigContentBadAgain()
{
using (var response = await _httpClient.GetAsync(_url))
{
return await response.Content.ReadAsStringAsync();
}
}

[Route("/big-content-good")]
public Task<Stream> BigContentGood()
{
Expand Down
27 changes: 25 additions & 2 deletions Talk1Samples/Controllers/ParallelAccessListController.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

Expand All @@ -9,18 +10,23 @@ namespace Talk1Samples.Controllers
public class ParallelAccessListController : Controller
{
[HttpGet("/parallel-list")]
public Task ParallelAsync()
public async Task ParallelAsync()
{
var list = new List<int>();

var tasks = new Task[10];

var context = new OneAtAtTimeSyncContext();
SynchronizationContext.SetSynchronizationContext(context);

for (int i = 0; i < tasks.Length; i++)
{
tasks[i] = GetNumberAsync(list, i);
}

return Task.WhenAll(tasks);
await Task.WhenAll(tasks);

SynchronizationContext.SetSynchronizationContext(null);
}

private async Task GetNumberAsync(List<int> results, int number)
Expand All @@ -29,5 +35,22 @@ private async Task GetNumberAsync(List<int> results, int number)

results.Add(number);
}

private class OneAtAtTimeSyncContext : SynchronizationContext
{
private Task _task = Task.CompletedTask;
private object lockObj = new object();

public override void Post(SendOrPostCallback d, object state)
{
lock (lockObj)
{
_task = _task.ContinueWith(_ =>
{
d(state);
});
}
}
}
}
}
2 changes: 1 addition & 1 deletion Talk1Samples/Talk1Samples.csproj
Expand Up @@ -9,7 +9,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Ben.BlockingDetector" Version="0.0.1" />
<PackageReference Include="Ben.BlockingDetector" Version="0.0.2" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion Threading/Controllers/HomeController.cs
Expand Up @@ -25,7 +25,7 @@ public string HelloSyncOverAsync()
return "Hello World";
}

[HttpGet("/hello-async-over-ssync")]
[HttpGet("/hello-async-over-sync")]
public async Task<string> HelloAsyncOverSync()
{
await Task.Run(() => Thread.Sleep(2000));
Expand Down
2 changes: 1 addition & 1 deletion Threading/Program.cs
Expand Up @@ -45,7 +45,7 @@ private static void ShowThreadStats(object obj)
ThreadPool.GetMinThreads(out var minThreads, out var _);
ThreadPool.GetMaxThreads(out var maxThreads, out var _);

Console.WriteLine($"Avail: {workerThreads}, Min: {minThreads}, Max: {maxThreads}, Req: {Requests}");
Console.WriteLine($"Avail: {workerThreads}, Active: {maxThreads - workerThreads}, Min: {minThreads}, Max: {maxThreads}, Req: {Requests}");

Thread.Sleep(1000);
}
Expand Down

0 comments on commit 5e8050e

Please sign in to comment.