Multi-hilo programación Learning Series --- clase de objeto mutex

código

static void Main()
{
	//定义一个互斥量
   const string MutextName = "CSharpThreadingCookbook";
   using (var m = new Mutex(false, MutextName))
   {
       if (!m.WaitOne(TimeSpan.FromSeconds(5), false))
       {
           Console.WriteLine("Second instance is running");
       }
       else
       {
           Console.WriteLine("Running");
           Console.ReadLine();
           m.ReleaseMutex();
       }
   }
   //此代码只为了方便截图,实际演示无用
   Console.ReadKey();
}

Ejecución de la primera
Aquí Insertar imagen Descripción
pulse cualquier tecla en el primer segundo plazo, dentro de los cinco segundos
Aquí Insertar imagen Descripción
principios
de inicio define un mutex, juego initialOwner en false, lo que significa que si se ha creado la exclusión mutua, permitiendo que el programa para obtener el mutex, mutex, si no se recibe respuesta, la pantalla funcionando, espera hasta que se pulsa una tecla y luego suelte las variables.
Si permitimos que el mismo programa, se intentará adquirir el mutex dentro de los cinco segundos, si no se pulsa ninguna tecla el primer programa en este momento, el segundo programa se iniciará la ejecución. Si, sin embargo, mantiene a la espera de cinco segundos, el segundo programa no será capaz de conseguir la exclusión mutua.

Nota: El
mutex es un globales objetos del sistema operativo, asegúrese de cerrar correctamente el mutex, preferiblemente usando un bloque de código para envolver el objeto de exclusión mutua.

Esta forma de realización se puede utilizar para sincronizar hilos entre los diferentes programas, puede extenderse a un gran número de escenarios de uso.

Publicado 37 artículos originales · ganado elogios 3 · Vistas 6332

Supongo que te gusta

Origin blog.csdn.net/huan13479195089/article/details/88884131
Recomendado
Clasificación