प्रौद्योगिकी साझेदारी

गो भाषा---समवर्ती प्रोग्रामिंगचैनल (द्वयचैनल, एकचैनल) तथा अनुप्रयोगस्य उदाहरणानि (निर्माता उपभोक्ता, मुद्रकप्रतिरूपम्)

2024-07-12

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

चैनल

गोरूटीन्स् एकस्मिन् एव पतास्थाने चाल्यन्ते, अतः साझास्मृतेः अभिगमनं समन्वयितं भवितुमर्हति ।गोरूटीनः स्मृतिसाझेदारी न कृत्वा, संचारद्वारा स्मृतिं साझां कुर्वन्ति ।

सन्दर्भप्रकारचैनलः CSP मोडस्य विशिष्टं कार्यान्वयनम् अस्ति तथा च बहुविधगोरूटीनसञ्चारार्थं उपयुज्यते । समवर्तीसुरक्षां सुनिश्चित्य आन्तरिकरूपेण समन्वयनं कार्यान्वितं करोति ।

चैनल प्रकार

map इव channel इत्येतत् make इत्यनेन निर्मितस्य अन्तर्निहितस्य data structure इत्यस्य सन्दर्भः अपि अस्ति ।
यदा वयं कञ्चन चैनल् प्रतिलिपिं कुर्मः अथवा फंक्शन् पैरामीटर् पासिंग् कृते तस्य उपयोगं कुर्मः तदा वयं केवलं चैनल् सन्दर्भं प्रतिलिखयामः, अतः कॉलरः आह्वानकर्ता च समानं चैनल् ऑब्जेक्ट् सन्दर्भयिष्यन्ति । अन्येषां सन्दर्भप्रकारानाम् इव चैनलस्य शून्यमूल्यं शून्यम् अस्ति ।
यदा भवन्तः चैनल् परिभाषयन्ति तदा भवन्तः चैनल् प्रति प्रेषितानां मूल्यानां प्रकारं अपि परिभाषितुं अर्हन्ति । अन्तर्निर्मित make() फंक्शन् इत्यस्य उपयोगेन चैनल्स् निर्मातुं शक्यन्ते:

make (chan Type)
make (chan Type,capacity)
  • 1
  • 2
  • यदा capacity=0, तदा चैनलं अनबफरं भवति तथा च पठनं लेखनं च अवरुद्धं करोति यदा capacity>0, तदा चैनले एकः कैशः भवति तथा च अ-अवरुद्धः भवति यावत् क्षमता-तत्त्वानि न पूरयन्ति तावत् लेखनं अवरुद्धं न भविष्यति ।
  • Chamnel ऑपरेटर् <- इत्यस्य माध्यमेन आँकडान् प्राप्नोति प्रेषयति च ।
channel<-value   //发送value 到channel
<-channel     //接收并将其丢弃
x:=<-channel   //从 channel 中接收数据,并賦偵给x
x,ok:=<-channel   //功能同上,同时检查通道是否已关闭或者是否为空
  • 1
  • 2
  • 3
  • 4

पूर्वनिर्धारितरूपेण, दत्तांशं प्राप्य प्रेषयन् च चैनलः अवरुद्धः भवति, यावत् अन्यः अन्तः सज्जः नास्ति, येन स्पष्टतालानां आवश्यकतां विना goroutine समन्वयनं सरलं भवति

पूरयतु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • नलिकां एकं मुद्रणस्य पुरतः, एकं मुद्रणस्य पृष्ठभागे च स्थाप्यते ।
  • यदि प्रथमं Person2 निष्पादितं भवति तथा च पाइपलाइन् मध्ये कोऽपि दत्तांशः नास्ति तर्हि तत् अवरुद्धं करिष्यति ।
  • Person1 निष्पादयति तथा च दत्तांशं मुद्रयित्वा, दत्तांशं पाइप् मध्ये प्रविशति तथा च Person2 तत् संवेदयिष्यति तथा च मुद्रणं आरभेत ।

चैनल् मार्गेण समन्वयनं, आँकडा-अन्तर्क्रिया च कार्यान्वितं कुर्वन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अनबफर चैनल

अबफरयुक्तः चैनलः एकः चैनलः अस्ति यस्य प्राप्तेः पूर्वं किमपि मूल्यं रक्षितुं क्षमता नास्ति ।
एतादृशस्य चैनलस्य आवश्यकता अस्ति यत् प्रेषण-ग्राहक-कार्यक्रमं पूर्णं कर्तुं प्रेषक-गोरूटीन्-ग्राहक-गोरूटीन् च एकस्मिन् समये सज्जाः भवेयुः । यदि एकस्मिन् समये द्वौ गोरूटीनौ सज्जौ न स्तः तर्हि चैनल् प्रथमं प्रेषणं वा प्राप्तुं वा कार्यं कुर्वन्तं गोरूटीन् अवरुद्ध्य प्रतीक्षां कर्तुं प्रेरयिष्यति ।
चैनल् प्रति प्रेषणस्य ग्रहणस्य च एषः अन्तरक्रियाः स्वभावतः समकालिकः भवति । न कश्चित् क्रियायाः अन्यस्मात् स्वतन्त्रतया अस्तित्वं प्राप्तुं शक्नोति ।
निम्नलिखितचित्रं दर्शयति यत् कथं द्वौ गोरूटीनौ अबफर-चैनेल्-उपयोगेन मूल्यं साझां कर्तुं शक्नुवन्ति:
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • अर्थात् चैनलः एव वस्तूनि संग्रहीतुं न शक्नोति यदि भवान् एकस्मिन् किमपि स्थापयति तर्हि तत्क्षणमेव बहिः आनेतुं शक्नोति।
  • प्रथमपदे द्वयोः गोरूटीनयोः चैनले आगच्छति, परन्तु द्वयोः अपि प्रेषणं प्राप्तुं वा न आरभते ।
  • २ चरणे वामे स्थितः गोरूटीन् चैनले स्वहस्तं प्राप्नोति, यत् चैनल् प्रति दत्तांशप्रेषणस्य क्रियायाः अनुकरणं करोति । अस्मिन् समये यावत् विनिमयः न समाप्तः तावत् गोरूटीन् चैनले ताडितः भविष्यति ।
  • ३ चरणे दक्षिणभागे स्थितः गोरूटीन् चैनल् मध्ये स्वहस्तं स्थापयति, यत् चैनल् तः दत्तांशं प्राप्तुं अनुकरणं करोति । इदं गोरूटीन् अपि चॅनेलमध्ये ताडितं भविष्यति यावत् आदानप्रदानं न समाप्तं भवति।
  • ४ तथा ५ चरणेषु आदानप्रदानं भवति, अन्ते ६ चरणे उभौ गोरूटीनौ स्वहस्तौ चैनलात् बहिः गृह्णतः, यत् ताडितस्य गोरूटीनस्य मुक्तस्य अनुकरणं करोति उभौ गोरूटीनौ इदानीं अन्यकार्यं कर्तुं शक्नुवन्ति।

अबफरयुक्तं चैनलं रचयन्तु

make (chan Type)//等价于make (chan Type,0)
  • 1

यदि बफर आकारः निर्दिष्टः नास्ति तर्हि चैनल् समकालिकः भवति अतः प्रेषकः प्रेषयितुं सज्जः न भवति तथा ग्राहकः प्राप्तुं सज्जः न भवति तावत् यावत् अवरुद्धः भवति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • ch&lt;-i चैनल् मध्ये दत्तांशं लिखति, तथा च मुख्यः कोर्युटिन् यावत् तत् न संवेदयति तावत् निष्पादयिष्यति, अस्मिन् समये उप-कोरूटिन् अपि अवरुद्धं करिष्यति, दत्तांशं पठित्वा प्रतीक्षते .
  • परन्तु println पाइप् पठित्वा दत्तांशं मुद्रयति, अतः मुद्रणस्य वेगः प्रणाल्याः निर्धारितः भवति ।

बफरयुक्तं चैनलम्

बफरयुक्तः चैनलः एकः चैनलः अस्ति यः प्राप्तेः पूर्वं एकं वा अधिकं वा मूल्यं संग्रहीतुं शक्नोति ।
एतादृशस्य चैनलस्य आवश्यकता नास्ति यत् goroutine इत्यनेन प्रेषणं प्राप्तुं च एकस्मिन् समये पूर्णं कर्तव्यम् । चैनल्-मध्ये अपि भिन्नाः शर्ताः भविष्यन्ति ये प्रेषण-प्राप्ति-क्रियाः अवरुद्धयन्ति । receive क्रिया केवलं तदा एव अवरुद्धं करिष्यति यदा प्राप्तुं चैनले मूल्यं नास्ति । प्रेषणक्रिया केवलं तदा एव अवरुद्धा भविष्यति यदा प्रेषितं मूल्यं समायोजयितुं चैनले उपलब्धं बफरं नास्ति ।
एतेन बफर-अनबफर-चैनेल्-योः मध्ये महत् अन्तरं भवति: अनबफर-चैनेल्-इत्यनेन गारण्टी भवति यत् गोरूटीन्-प्रेषण-प्राप्तिः च एकस्मिन् समये आँकडानां आदान-प्रदानं करिष्यति: बफर-चैनेल्-मध्ये तादृशी गारण्टी नास्ति
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • चरण 1 मध्ये दक्षिणभागे goroutine चैनलात् मूल्यं प्राप्नोति ।
  • २ चरणे दक्षिणभागे स्थितः गोरूटीन् स्वतन्त्रतया मूल्यं प्राप्तुं क्रियां सम्पन्नं करोति, यदा तु वामे स्थितः गोरूटीन् नूतनं मूल्यं चैनल् प्रति प्रेषयति
  • 3 चरणे वामे स्थितः goroutine अद्यापि चैनल् प्रति नूतनं मूल्यं प्रेषयति, दक्षिणतः goroutine च चैनलात् अन्यत् मूल्यं प्राप्नोति । अस्मिन् पदे द्वौ क्रियाद्वयं न समन्वयितं न च परस्परं अवरुद्धं भवति ।
  • अन्ते ४ चरणे सर्वं प्रेषणं ग्रहणं च सम्पन्नं भवति, अद्यापि चॅनेलमध्ये कतिपयानि मूल्यानि सन्ति, अधिकमूल्यानां संग्रहणार्थं किञ्चित् स्थानं च अस्ति ।

निर्मियताम्

make (chan Type,capacity)
  • 1

यदि बफरक्षमता दत्ता भवति तर्हि चैनल् अतुल्यकालिकः भवति । यावत् बफरमध्ये दत्तांशप्रेषणार्थं अप्रयुक्तं स्थानं भवति अथवा प्राप्तुं शक्यमाणं दत्तांशं भवति तावत् संचारः अवरोधं विना प्रचलति ।

पूरयतु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • यदि पर्याप्तं त्रीणि संगृहीताः सन्ति तर्हि तत् अवरुद्ध्य पठनस्य प्रतीक्षां करिष्यति यदा मुख्यकोरूटिन् दत्तांशस्य भागं पठितवान् अस्ति तथा च मुक्तस्थानं भवति तदा उपकोरुटिन् निरन्तरं निष्पादयति, तदनन्तरं मुद्रणक्रमः निश्चितः न भविष्यति
    अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

close channel

चैनल् ok इत्यस्य उपयोगं कर्तुं शक्नोति यत् चैनल् अद्यापि उद्घाटितः अस्ति वा यदि चैनल् बन्दः अस्ति तर्हि दत्तांशः न पठितः भविष्यति ।

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • num ,ok:=<-chयदि कश्चन चैनलः बन्दः अस्ति तर्हि ज्ञातुं शक्नोति।

सूचना

  • सञ्चिकानां इव बहुधा चैनल्स् बन्दीकरणस्य आवश्यकता नास्ति केवलं तदा एव चैनल् पिधायताम् यदा भवतः समीपे वास्तवतः किमपि दत्तांशं प्रेषयितुं नास्ति, अथवा यदि भवान् स्पष्टतया रेन्ज लूप् अथवा तत्सदृशं समाप्तुं इच्छति
  • चैनलं बन्दं कृत्वा, चैनलं प्रति अधिकं दत्तांशं प्रेषयितुं न शक्यते (आतङ्कदोषः प्रवर्तते, येन स्वागतं तत्क्षणमेव शून्यमूल्यं प्रत्यागच्छति):
  • चैनलं बन्दं कृत्वा भवन्तः chamnel इत्यस्मात् आँकडान् निरन्तरं प्राप्तुं शक्नुवन्ति:
  • nil चैनल् कृते प्रेषणं ग्रहणं च अवरुद्धं भविष्यति ।
    अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
  • चैनलं भ्रमितुं स्वयमेव लूप् तः बहिः कूर्दितुं च भवन्तः range इत्यस्य उपयोगं कर्तुं शक्नुवन्ति
    अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

एकदिशा चैनल

पूर्वनिर्धारितरूपेण, चैनल् द्वय-प्रश्ना अस्ति, अर्थात् भवान् तस्मै दत्तांशं प्रेषयितुं तस्मात् दत्तांशं प्राप्तुं च शक्नोति ।
परन्तु वयं प्रायः एकं चैनलं पैरामीटर् रूपेण पारितं पश्यामः तथा च मूल्यस्य उपयोगः एकस्मिन् दिशि अपेक्षितः भवति, केवलं दत्तांशं प्रेषयितुं वा केवलं दत्तांशं प्राप्तुं वा अस्मिन् समये वयं चैनलस्य दिशां निर्दिष्टुं शक्नुमः एकदिशायाः chamel चरस्य घोषणा अतीव सरलं भवति, यथा ।

var ch1 chan int //ch1双向
var ch2 chan<-float64 //ch2单向,只能用于写float64数据
var ch3 <-chan int  //ch3单向,只能用于读int数据
  • 1
  • 2
  • 3

chan&lt;- इत्यस्य अर्थः अस्ति यत् दत्तांशः पाइप् मध्ये प्रविशति, दत्तांशः च पाइप् मध्ये लिखितः भवति, यत् आह्वानकर्त्रे निर्गच्छति ।
&lt;-chan इत्यनेन सूचितं यत् दत्तांशः पाइपतः बहिः आगच्छति ।
एकं चैनलं अन्तर्निहितरूपेण एकदिशायां पङ्क्तौ परिवर्तयितुं शक्यते, केवलं प्राप्य केवलं प्रेषयितुं वा, परन्तु एकदिशायाः चैनलं सामान्यचैनलरूपेण परिवर्तयितुं न शक्यते;

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

उत्पादक-उपभोक्तृ-प्रतिरूपस्य कार्यान्वयनार्थं एकस्यैव मार्गस्य उपयोगं कुर्वन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु