📜  c# multipthreading - C# (1)

📅  最后修改于: 2023-12-03 15:13:49.369000             🧑  作者: Mango

C# Multiprocessing

C# is a robust language that provides excellent support for concurrent programming through its multiprocessing capabilities. Multiprocessing is the process of running multiple threads or processes simultaneously to achieve parallel execution of tasks.

In C#, there are two primary ways of implementing multiprocessing: multi-threading and multiprocessing.

Multi-threading

Multi-threading is the process of creating multiple threads within a single process. Each thread has its own program counter, stack, and set of registers. Multi-threading is useful when we want to perform multiple tasks in parallel within a single application.

Creating a Thread

We can create a new thread in C# by instantiating an instance of the Thread class and calling the Start method on it, as shown below:

Thread thread = new Thread(MyMethod);
thread.Start();

The MyMethod is a method that we want to execute the thread.

Joining a Thread

We can join a thread in C# by calling the Join method on the thread instance. This will cause the current thread to wait until the specified thread has completed its execution, as shown below:

Thread thread = new Thread(MyMethod);
thread.Start();
thread.Join(); //wait till thread completes
Example
using System;
using System.Threading;

namespace MultiThreading
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread thread1 = new Thread(Method1);
            Thread thread2 = new Thread(Method2);

            thread1.Start();
            thread2.Start();

            thread1.Join();
            thread2.Join();

            Console.WriteLine("Main thread completed execution.");
        }

        static void Method1()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Thread 1 is executing.");
            }
        }

        static void Method2()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Thread 2 is executing.");
            }
        }
    }
}
Multiprocessing

Multiprocessing is the process of creating multiple processes to achieve parallel execution of tasks. Each process has its own address space, program counter, and set of registers.

Creating a Process

We can create a new process in C# by instantiating an instance of the Process class and calling the Start method on it, as shown below:

Process process = new Process();
process.StartInfo.FileName = "myprogram.exe";
process.Start();

The myprogram.exe is the name of the program that we want to execute in the new process.

Example
using System;
using System.Diagnostics;

namespace MultiProcessing
{
    class Program
    {
        static void Main(string[] args)
        {
            Process process = new Process();

            process.StartInfo.FileName = "notepad.exe";
            process.StartInfo.Arguments = "test.txt";

            process.Start();
        }
    }
}
Conclusion

C# multiprocessing, whether we use multi-threading or multiprocessing, can be a powerful tool for achieving parallel execution of tasks. By utilizing these features, we can significantly improve the performance of our applications and take advantage of modern hardware architectures.