📜  C# – 锁定线程

📅  最后修改于: 2022-05-13 01:55:36.657000             🧑  作者: Mango

C# – 锁定线程

多线程是任何编程语言的强大概念之一。它基本上是基于线程的多处理。在这个过程中,程序被分成不同的部分,这些部分可以同时或同时执行。在程序中使用多线程的好处是它可以最大限度地利用我们系统的 CPU。线程是可能与另一个线程共享资源的轻量级子进程。这就是为什么使用多线程机制的程序往往会消耗更少的空间。这随着多任务处理而变化,因为在这种情况下,为不同的任务分配了单独的内存。本文重点介绍通过 C# 演示锁定线程。

锁定线程

lock 语句用于对指定对象进行互斥锁。它执行指定的块,然后释放锁。在锁处于活动状态期间,持有锁的线程可以再次获取和释放锁。请注意,任何其他线程都无法访问该锁,并且它会等待,除非该锁被释放。

句法:

这里,exp 是引用类型的表达式。

注意:在 lock 语句中不能使用 await运算符。

示例:在下面的程序中,我们使用了一个 for 循环,并且在迭代的每一步,我们都在创建一个新线程。在这里,我们使用 lock 关键字将语句块指定为临界区,方法是获取指定对象的互斥锁,然后执行语句。现在 sleep() 方法已用于将线程暂停特定时间段,然后它将释放锁。

C#
// C# program to illustrate lock in thread
using System;
using System.Threading;
 
class GFG{
 
// Creating a reference type object
static readonly object obj = new object();
 
static void Sample()
{
     
      // Lock statement block
    lock(obj)
    {
         
          // Sleep the thread
        Thread.Sleep(20);
           
          // Print the count
        Console.WriteLine(Environment.TickCount);
    }
}
 
// Driver code
static public void Main()
{
     
      // Iterate using a for-loop
    for(int i = 0; i < 5; i++)
    {
         
          // Create a new thread
        ThreadStart begin = new ThreadStart(Sample);
           
          // Start executing the thread
        new Thread(begin).Start();
    }
}
}



输出:

-1836894307
-1836894283
-1836894263
-1836894243
-1836894223