Tutorial by Examples

class Program { static void Main(string[] args) { // Create 2 thread objects. We're using delegates because we need to pass // parameters to the threads. var thread1 = new Thread(new ThreadStart(() => PerformAction(1))); var thread2 = new Thread(...
class Program { static void Main(string[] args) { // Run 2 Tasks. var task1 = Task.Run(() => PerformAction(1))); var task2 = Task.Run(() => PerformAction(2))); // Wait (i.e. block this thread) until both Tasks are complete. Task.WaitA...
private static void explicitTaskParallism() { Thread.CurrentThread.Name = "Main"; // Create a task and supply a user delegate by using a lambda expression. Task taskA = new Task(() => Console.WriteLine($"Hello from task {nameof(taskA)}.")...
private static void Main(string[] args) { var a = new A(); var b = new B(); //implicit task parallelism Parallel.Invoke( () => a.DoSomeWork(), () => b.DoSomeOtherWork() ); }
If you're doing multiple long calculations, you can run them at the same time on different threads on your computer. To do this, we make a new Thread and have it point to a different method. using System.Threading; class MainClass { static void Main() { var thread = new Thread(Seco...
using System.Threading; class MainClass { static void Main() { var thread = new Thread(Secondary); thread.Start("SecondThread"); } static void Secondary(object threadName) { System.Console.WriteLine("Hello World from thread: " + thread...
Environment.ProcessorCount Gets the number of logical processors on the current machine. The CLR will then schedule each thread to a logical processor, this theoretically could mean each thread on a different logical processor, all threads on a single logical processor or some other combination...
Sometimes, you want your threads to simultaneously share data. When this happens it is important to be aware of the code and lock any parts that could go wrong. A simple example of two threads counting is shown below. Here is some dangerous (incorrect) code: using System.Threading; class MainCl...
If you have a foreach loop that you want to speed up and you don't mind what order the output is in, you can convert it to a parallel foreach loop by doing the following: using System; using System.Threading; using System.Threading.Tasks; public class MainClass { public static void Main...
A deadlock is what occurs when two or more threads are waiting for eachother to complete or to release a resource in such a way that they wait forever. A typical scenario of two threads waiting on eachother to complete is when a Windows Forms GUI thread waits for a worker thread and the worker thre...
A deadlock is what occurs when two or more threads are waiting for eachother to complete or to release a resource in such a way that they wait forever. If thread1 holds a lock on resource A and is waiting for resource B to be released while thread2 holds resource B and is waiting for resource A to ...

Page 1 of 1