2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
समवर्ती प्रोग्रामिंग् इत्यत्र समन्वयनम् एकः मूलभूतः आवश्यकता अस्ति । सेमाफोर् इति सामान्यं समन्वयनतन्त्रं यस्य उपयोगः साझासंसाधनानाम् अभिगमनं नियन्त्रयितुं भवति । C# इत्यस्मिन् System.Threading नामस्थानस्य अधः Semaphore वर्गस्य माध्यमेन सेमाफोर् कार्यान्विताः भवन्ति । अस्मिन् लेखे Semaphore तथा C# इत्यस्मिन् तस्य अनुप्रयोगानाम् विस्तरेण परिचयः भविष्यति ।
सेमाफोर् इति पूर्णाङ्कमूल्यं यस्य उपयोगेन साझासंसाधनस्य अभिगमनं नियन्त्रयितुं शक्यते । सेमाफोरस्य उपयोगः मुख्यतया द्वयोः प्रयोजनयोः कृते भवति- १.
परस्परं विरुद्धम् : १. केवलं एकः सूत्रः एकस्मिन् समये साझासंसाधनं प्राप्तुं शक्नोति इति सुनिश्चितं कुर्वन्तु ।
गणनां कारोतु: युगपत् साझासंसाधनानाम् अभिगमनाय निश्चितसङ्ख्यायाः सूत्राणां अनुमतिं ददातु ।
प्रायः निम्नलिखितपरिदृश्येषु सेमाफोरस्य उपयोगः भवति ।
C# इत्यस्मिन् Semaphore वर्गः semaphores इत्यस्य उपरि मूलभूतं कार्यं प्रदाति । सेमाफोर् निर्मातुं निम्नलिखितवाक्यविन्यासस्य उपयोगं कुर्वन्तु ।
Semaphore semaphore = new Semaphore(initialCount, maximumCount);
initialCount: सेमाफोरस्य आरम्भिकगणनामूल्यं, यत् सेमाफोरस्य निर्माणसमये मूल्यं सूचयति ।
maximumCount: सेमाफोरस्य अधिकतमं गणनामूल्यं, यत् अधिकतमं मूल्यं सूचयति यत् सेमाफोरः प्राप्तुं शक्नोति ।
C# इत्यस्मिन् SemaphoreSlim क्लास् इत्यस्य उपयोगेन सेमाफोर् रचयन्तु । इदं वर्गं Semaphore इत्यस्य समन्वयनसन्दर्भकार्यन्वयनम् अस्ति, यत् अधिकलचीलानि अतुल्यकालिकसञ्चालनानि प्रदाति ।
System.Threading इत्यस्य उपयोगेन;
public class सेमाफोरउदाहरण
{
private SemaphoreSlim semaphore = new SemaphoreSlim(3); // एकस्मिन् समये 3 थ्रेड्स अभिगमनस्य अनुमतिं दातुं गणना सेमाफोर रचयन्तु
public void DoWork()
{
semaphore.Wait(); // 获取信号量,如果信号量小于0,线程将被阻塞
try
{
// 执行共享资源的操作
}
finally
{
semaphore.Release(); // 释放信号量
}
}
}
सेमाफोर् संसाधनानाम् निर्माणं, प्राप्तिः, विमोचनं च कथं करणीयम् इति दर्शयितुं निम्नलिखितम् सरलम् उदाहरणम् अस्ति ।
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();
}
}
}
अस्मिन् उदाहरणे वयं एकं सेमाफोर् रचयामः यत् 3 थ्रेड् पर्यन्तं Work मेथड् एकत्रैव निष्पादयितुं शक्नोति । प्रत्येकं थ्रेड् semaphore.WaitOne() इति आह्वानं कुर्वन् सेमाफोर् प्राप्तुं प्रयतते । यदि सेमाफोरस्य मूल्यं 0 इत्यस्मात् अधिकं भवति तर्हि थ्रेड् निष्पादनं निरन्तरं करिष्यति । अन्यथा यावत् अन्यः सूत्रः सेमाफोरं न मुञ्चति तावत् सूत्रं अवरुद्धं भविष्यति ।
अतुल्यकालिकाः क्रियाः
SemaphoreSlim वर्गः अतुल्यकालिकप्रतीक्षाविमोचनविधयः अपि प्रदाति:
एतेन सेमाफोरस्य उपयोगः अधिकं लचीलः भवति तथा च अतुल्यकालिकप्रोग्रामिंगप्रतिमानैः सह उत्तमरीत्या एकीकृतः भवति ।
C# इत्यस्मिन् Semaphore (semaphore) इति एकं शक्तिशाली समन्वयनतन्त्रम् अस्ति यत् विकासकानां साझासंसाधनानाम् अभिगमनं नियन्त्रयितुं साहाय्यं कर्तुं शक्नोति । सेमाफोर्-इत्यस्य उपयोगेन वयं बहुविध-धागानां साझा-संसाधन-प्रवेशं प्रभावीरूपेण प्रबन्धयितुं शक्नुमः, येन सुनिश्चितं भवति यत् संसाधन-उपयोगेन दत्तांश-दौडाः अन्ये समन्वयन-समस्याः वा न भवन्ति
C# प्रोग्रामिंग् इत्यस्मिन् Semaphore इत्यस्य महत्त्वं कोडपठनीयतां परिपालनक्षमतां च निर्वाहयन् जटिलसमवर्तीनियन्त्रणतर्कं कार्यान्वितुं विकासकानां सहायतां कर्तुं तस्य क्षमतायां प्रतिबिम्बितम् अस्ति अस्य उपयोगस्य सुगमता अस्य सरल-एपिआइ-निर्माणे समृद्धे समन्वयनसन्दर्भसमर्थने च प्रतिबिम्बिता अस्ति ।
व्यावहारिकप्रयोगेषु सेमाफोरस्य उपयोगः दत्तांशकोशसंयोजनपूलस्य आकारं सीमितुं, संजालसंसाधनानाम् अभिगमनं नियन्त्रयितुं, उत्पादक-उपभोक्तृप्रतिरूपस्य समन्वयनं प्राप्तुं इत्यादिषु कर्तुं शक्यते अस्य लेखस्य परिचयस्य माध्यमेन वयम् आशास्महे यत् पाठकाः सेमाफोरस्य सिद्धान्तान् उपयोगं च अधिकतया अवगन्तुं शक्नुवन्ति तथा च वास्तविकपरियोजनासु तस्य लाभं ग्रहीतुं शक्नुवन्ति।