C #: hilo

1.   Proceso, el proceso es la unidad básica para la asignación de recursos y la unidad básica para la operación de programación. Un proceso contiene al menos un hilo.

  Subproceso, el subproceso es la unidad más pequeña en el proceso para realizar operaciones, es decir, la unidad básica para realizar la programación del procesador. Los hilos pueden usar los recursos que posee el proceso.

  Multi-thread, música qq abierta, escuchar canciones, ver mv, descargar.

  Multiproceso, música qq en ejecución, música en la nube Netease, música genial ...

 

2.   En el sistema operativo que introduce subprocesos , los procesos generalmente se usan como la unidad básica para asignar recursos, y los subprocesos se usan como la unidad básica para la operación independiente y la programación independiente. Dado que los subprocesos son más pequeños que los procesos, básicamente no tienen recursos del sistema, Su sobrecarga de programación es relativamente pequeña, lo que puede mejorar efectivamente el grado de ejecución concurrente de múltiples programas en el sistema.

 

3.   En C #, se pueden usar varios subprocesos para ejecutar código en paralelo. Cada subproceso tiene una ruta de ejecución independiente y puede ejecutarse simultáneamente con otros subprocesos.

  Un programa C # comienza con un solo hilo, que es creado automáticamente por el CLR y el sistema operativo ("hilo principal"), y tiene múltiples hilos para crear hilos adicionales. 

 

Cuatro,   demostración

 

 

using System;
using System.Threading;   //引入命名空间

namespace ConsoleApplication1
{
    class ThreadTest
    {
        static bool done;
        static object locker = new object();

        static void Main(string[] args)
        {
            //三种实例化方法 
            Thread go = new Thread(Go);   //线程1 调用Go方法
            //Thread go = new Thread(new ThreadStart(Go));   //用委托指定线程从哪里执行
            //Thread go = new Thread(delegate () { Console.WriteLine("方法"); });   //用匿名方法启动线程


            Thread ro = new Thread(Ro);   //线程2 调用Ro方法

            Thread go_1 = new Thread(Go);   //线程3 同样调用Go方法

            go.Start();   //开启线程1
            go_1.Start();   //开启线程3
            go.Join();   //等待当前线程结束方可执行下个线程

            if (!(go_1.IsAlive))   //IsAlive返回当前线程状态,Start()到结束为true,反之false
            {
                ro.Start();   //开启线程2
                Go();
            }
        }
        static void Go()
        {
            lock (locker)   //加锁
            {
                if (!done)
                {
                    done = true;
                    for (int i = 0; i < 5; i++)
                    {
                        Thread.Sleep(1000);
                        Console.WriteLine("Done");
                    }
                }
            }
        }
        static void Ro()
        {
            Console.WriteLine("Rooo");
        }
    }
}

 

 

 

 

 

Publicado 16 artículos originales · elogiado 7 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/yuecangjiao5151/article/details/76034844
Recomendado
Clasificación