zoukankan      html  css  js  c++  java
  • Part 86 to 88 Talking about Multithreading in C#

    Part 86   Multithreading in C#

    What is a Process:

    Process is what the operating system uses to facilitate(帮助) the execution of a program by providing the resources required.Each process has unique process Id associated with(关联) it. You can view the process within which a program is being executed using windows task manager.

    What is Thread:

    Thread is a light weight(轻量级) process.A process has at least one thread which is commonly called(通常被称为) as main thread which actually executes the application code. A single process can hava multiple threads.

    Please Note: All the threading related classes are present in(存在于) System.Threading namespace.

    Part 87   Advantages and disadvantages of multithreading

    Advantages of multithreading:

    1, To maintain a responsive user interface(快速响应用户界面)

    2, To make effcient use of processor time while waiting for I/O operations to complete.(适当的利用处理器,在等待I / O操作完成的这段时间。)

    3, To split large, CPU-bound tasks to be processed simultaneously on a machine that has multiple processors/cores(分割大cpu密集型任务处理的机器上同时有多个处理器/核心)

    Disadvantages of multithreading:

    1, On a single processor/core machine threading can affect performance negatively as there is overhead involved with context-switching.(在单个处理器/核心的机器,线程会对上下文切换开销的性能有负面影响)

    2, Have to write more lines of code to accomplish the same task.(需要编写更多的代码来完成相同的任务)

    3,Multithreaded applications are difficult to write, understand, debug and maintain.(多线程应用程序很难写,理解、调试和维护。)

    Please Note: Only use multithreading when the advantages of doing so outweigh the disavantages.

    Part 88   ThreadStart delegate

    To create a Thread, create an instance of Thread class and to it's constructor pass the name of the function that we want the thread to execute.

    class Program
        {
            static void Main(string[] args)
            {
                Thread t = new Thread(Number.Print);
                t.Start();
            }
        }
    
        public class Number
        {
            public static void Print()
            {
                for(int i=0;i<10;i++)
                {
                    Console.WriteLine(i);
                }
            }
        }
    Thread

     Thread t = new Thread(Number.Print);
     t.Start();

    We can rewrite the above line using ThreadStart delegate as shown below

    Thead t1 = new Thread(new ThreadStart(Number.Print));

    t1.Start();

    Why a delegate need to be passed as a parameter to the Thread class constructor?

    The purpose of creating a Thread is to execute a function. A delegate is a type safe function pointer, meaning it points to a function that the thread has to execute. In short, all threads require an entry point to start execution. Any thread you create will need an explicitly defined entry point i.e(那就是说) a pointer to the function where they should begin execution. So threads always require a delegate.

    In the code below, we are not explicitly creating the ThreadStart delegage, then how is it working here?

    Thread t1 = new Thread(Number.Print);

    t1.Start();

    It's working in spite of(尽管) not creating the ThreadStart delegage explictly because the framework is doing it automatically for us.

    Other ways, We can also rewrite the same line using delegate() keyword

    Thread t = new Thread(delegate(){Number.Print();});

    The same line rewritten using lambda expression

    Thread t = new Thread(()=>Number.Print());

  • 相关阅读:
    栈的压入、弹出序列
    CSS min-height 属性
    ie6 png 透明的解决方法,大网站都在用
    div覆盖div DIV相互重叠如何解决
    div代码大全 DIV代码使用说明
    CSS中ul li居中的问题
    复选框单选框与文字对齐问题的研究与解决
    CSS利用filter/opacity实现背景透明
    什么是块级元素和内联级元素(二)
    网页上PNG透明图片的运用(ie6+滤镜)
  • 原文地址:https://www.cnblogs.com/gester/p/4793452.html
Copyright © 2011-2022 走看看