Technology sharing

Explicatio ac applicatione Semaphoris (semaphoris) in C #

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Insert imaginem descriptionis hic


In programmatione concurrente, synchronisatio fundamentalis exigentia est. Semaphore synchronismus communis est mechanismus usus ad refrenandum accessum ad facultates communes. In C#, semaphores perficiuntur per genus Semaphoris sub System. Spatii spatii. Hic articulus semaphorem et applicationes suas in C# in speciali introducet.

1. Quid est semaphore?

Semaphora valor integer est qui ad refrenandum accessum ad subsidia communis adhiberi potest. Semaphores duo maxime usi sunt.

Mutuo excludit: Perficite, ut una tantum fila possit accedere ad facultates communes simul.
numerare; Patitur certos filorum numero simul accedere ad facultates communes.
Semaphores solent in missionibus sequentibus;

  • Modus concurrentes accessus ad facultates, sicut limitans numerum nexuum datorum.
  • Synchronum legere et scribere notitiarum in producentis dolor problema.
  • Synchronise accessus ad facultates communicandas inter plures processus.

2. Semaphore classis in C#

In C#, classis Semaphoris praecipuas operationes in semaphoribus praebet. Ad semaphoros creare, sequenti syntaxi utere;

Semaphore semaphore = new Semaphore(initialCount, maximumCount);
  • 1

initialCount: Numeratio initialis valor semaphoris significat valorem semaphoris cum creatum est.
maximumCount: Maximus numerus valorem semaphoris significans maximum valorem quod semaphora attingere potest.

3. Exempla utendi semaphores

3,1 crea in semaphoro

In C#, semaphorem crea utens classe SemaphoreSlim. Genus hoc est synchronisation contextus semaphoris exsequendi, flexibiliores operationes asynchronas praebens.

using System.Threading;

publicum genus SemaphoreExample
{
semaphoreSlim semaphore = semaphoreSlim(3);

public void DoWork()
{
    semaphore.Wait(); // 获取信号量,如果信号量小于0,线程将被阻塞

    try
    {
        // 执行共享资源的操作
    }
    finally
    {
        semaphore.Release(); // 释放信号量
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

}

3,2 usus semaphores ad synchronize relatorum

Hoc exemplum simplex est ad demonstrandum quomodo opes semaphore creare, adipisci ac dimittere.

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // 创建信号量,允许3个线程同时访问共享资源
        Semaphore semaphore = new Semaphore(3, 3);

        // 创建和启动线程
        for (int i = 0; i < 10; i++)
        {
            new Thread(() => Work(semaphore)).Start();
        }
    }

    static void Work(Semaphore semaphore)
    {
        try
        {
            // 获取信号量
            semaphore.WaitOne();

            // 执行共享资源的操作
            Console.WriteLine($"线程 {Thread.CurrentThread.ManagedThreadId} 正在执行。");
            Thread.Sleep(1000);
        }
        finally
        {
            // 释放信号量
            semaphore.Release();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

In hoc exemplo semaphoram creamus quae permittit usque ad 3 staminum methodum eodem tempore perficiendi Laboris. Singula stamina semaphorem acquirere conatur cum semaphore vocato.WaitOne(). Si valor semaphoris maior est quam 0, stamen prosequens permanebit. Alioquin stamen impedietur donec aliud stamen emittat semaphoram.

Asynchronous res
Classis SemaphoreSlim asynchronas insidias et remissiones praebet etiam modos;

  1. expectare semaphore.WaitAsync () Asynchronously exspecta semaphore
  2. insidiae semaphore.ReleaseAsync () dimitte semaphore asynchronously

Inde usus semaphorum flexibilium et meliorum cum asynchronis programmandi exemplaribus integratur.

4. Libri

Semaphore (semaphore) in C # potens est mechanismus synchronisatio quae tincidunt moderari potest accessum ad facultates communes. Semaphorum utendo, accessum ad facultates communes multiplices filorum accessum efficaciter administrare possumus, eo quod usus subsidii notas gentes vel alias synchronisationum proventus non facit.

Momentum Semaphoris in C# programmandi relucet in facultate sua adiuvandi facultatem ad effectum deducendi complexum concurrit logicam moderandi, servato codice readability et conservabilitatis. Otium usus eius in simplici API consilio et locupleti synchronisationum contextui subsidium relucet.

In applicationibus practicis, semaphores adhiberi possunt ad quantitatem nexus datorum piscinae, accessum ad facultates retis moderandas, ac synchronizationem producentis-consumentis exemplar consequi, etc. Per introductionem huius articuli, speramus lectores principia usumque Semaphoris melius intelligere et in re incepta uti.