Concurrent computing: Difference between revisions

Content added Content deleted
(Removed external library solution, as task can be done through standard ones.)
m (Updated whitespace.)
Line 166: Line 166:
=={{header|c sharp|C#}}==
=={{header|c sharp|C#}}==
===With Threads===
===With Threads===
<lang csharp>
<lang csharp>static Random tRand = new Random();
static Random tRand = new Random();
static void Main(string[] args) {
Thread t = new Thread(new ParameterizedThreadStart(WriteText));

t.Start("Enjoy");
static void Main(string[] args)
t = new Thread(new ParameterizedThreadStart(WriteText));
{
t.Start("Rosetta");
Thread t = new Thread(new ParameterizedThreadStart(WriteText));
t = new Thread(new ParameterizedThreadStart(WriteText));
t.Start("Enjoy");
t.Start("Code");

Console.ReadLine();
t = new Thread(new ParameterizedThreadStart(WriteText));
t.Start("Rosetta");

t = new Thread(new ParameterizedThreadStart(WriteText));
t.Start("Code");

Console.ReadLine();
}
}
private static void WriteText(object p) {

Thread.Sleep(tRand.Next(1000, 4000));
private static void WriteText(object p)
Console.WriteLine(p);
{
}</lang>
Thread.Sleep(tRand.Next(1000, 4000));
Console.WriteLine(p);
}
</lang>

An example result:
<pre>
Enjoy
Code
Rosetta
</pre>
===With Tasks===
===With Tasks===
{{works with|C sharp|7.1}}
{{works with|C sharp|7.1}}
<lang csharp>using System;
<lang csharp>using System;
using System.Threading.Tasks;
using System.Threading.Tasks;
public class Program {

public class Program
{
static async Task Main() {
static async Task Main() {
Task t1 = Task.Run(() => Console.WriteLine("Enjoy"));
Task t1 = Task.Run(() => Console.WriteLine("Enjoy"));
Task t2 = Task.Run(() => Console.WriteLine("Rosetta"));
Task t2 = Task.Run(() => Console.WriteLine("Rosetta"));
Task t3 = Task.Run(() => Console.WriteLine("Code"));
Task t3 = Task.Run(() => Console.WriteLine("Code"));

await Task.WhenAll(t1, t2, t3);
await Task.WhenAll(t1, t2, t3);
}
}
Line 214: Line 195:
<lang csharp>using System;
<lang csharp>using System;
using System.Threading.Tasks;
using System.Threading.Tasks;
public class Program {

public class Program
{
static void Main() => Parallel.ForEach(new[] {"Enjoy", "Rosetta", "Code"}, s => Console.WriteLine(s));
static void Main() => Parallel.ForEach(new[] {"Enjoy", "Rosetta", "Code"}, s => Console.WriteLine(s));
}</lang>
}</lang>