Skip to content

Instantly share code, notes, and snippets.

View nathanaw's full-sized avatar

Nathan Allen-Wagner nathanaw

View GitHub Profile
@nathanaw
nathanaw / Parallel.For.Async.cs
Last active July 27, 2018 01:37
Parallel.For() Not Async Friendly
using System.Threading.Tasks
void Main()
{
var options = new ParallelOptions() {
MaxDegreeOfParallelism = 2
};
Parallel.For(0, 10, options, i => ExecTaskSync(i));
@nathanaw
nathanaw / Parallel.Async.DaC.cs
Created July 27, 2018 02:27
Async Governor - Divide and Conquer
// using System.Threading.Tasks
var maxIterations = 10000;
var maxDOP = 10;
// Divide into groups.
var parallelGroups = Enumerable.Range(0, maxIterations)
.GroupBy(r => (r % maxDOP));
var parallelTasks = parallelGroups.Select(groups =>
@nathanaw
nathanaw / Parallel.Async.SemephoreSlim.cs
Last active March 20, 2023 17:13
Async Governor - SemphoreSlim
// using System.Threading.Tasks
const int MAX_DEGREE_OF_PARALLELISM = 2;
static SemaphoreSlim _semaphore = new SemaphoreSlim(MAX_DEGREE_OF_PARALLELISM);
async void Main()
{
var tasks = Enumerable.Range(0, 10)
.Select(i => ExecTask(i))
.ToArray();