Ang pagdidisenyo ng mga disenyong pang-isahangton na sinulid-ligtas ay mahalaga sa mga aplikasyong multi-nababasa upang matiyak na isang halimbawa lamang ng isang klase ang umiiral, kahit na ang maramihang sinulid ay nagtatangkang lumikha ng isang halimbawa nang sabay-sabay.Ang artikulong ito ay tumutuklas sa mga pinakamahusay na mga gawain at karaniwang pamamaraan para sa pagpapatupad ng sinulid-ligtas na isangton na mga padron.
Pag - unawa sa Iisang Halimbawa
Ang singleton na pattern ay naglilimitahan sa konstante ng isang klase sa isang bagay. Ito ay kadalasang ginagamit para sa pangangasiwa ng mga partikulong yaman tulad ng mga koneksiyon o configuration setting ng database. Sa mga kapaligirang multi-kabasahang-malay, ang walang muwang na isahangton na pagpapatupad ay maaaring humantong sa maraming mga pagkakataon, na dinokontra ang layunin ng padron.
Mga Hamon sa mga Kapaligirang Maraming - Kabasahan
Kapag sinisikap ng maraming sinulid na sabay - sabay na lumikha ng isang halimbawa, maaaring mangyari ang mga kalagayan ng lahi nang walang wastong pagtutugma, maaaring dumaan ang maraming sinulid sa pagkakataon sa pagsusuri at paglikha ng maraming bagay.
Dalawang-Khecked Locking
Ang pamamaraang ito ay nakababawas sa pagtutugma sa itaas sa pamamagitan ng pagsusuri kung may pagkakataon na nai - adjust na bago pa man kumuha ng kandado.
Halimbawa (Java):
[[kailangan ng sanggunian] statistical statent statential Singleton hit;]
[publisher statistical Singleton get Instance() ⁇
kung (instance == null) ⁇ [
Pagtutugma (Singleton.class) ⁇ [
kung (instance == null) ⁇ [
[bagong Singleton();]
return;
Inisyal na "Do-Demand Holder Idiom"
Ang pamamaraang ito ay nag - aalis ng mga mekanismo sa klase na nag - a - load ng sinulid upang matiyak ang kaligtasan nang walang tuwirang pagdurugtong - tugma.
Halimbawa (Java):
[kailangan ng sanggunian] statistical class Holder ⁇
pribadong statistical final Singleton INSTANE = bagong Singleton();
[publisher statistical Singleton get Instance() ⁇
[Talaksan][Talaksan:1]
Pinakamabuting Gawain Para sa Kaligtasan sa Pamamagitan ng Hread
- Gamitin ang pangunang-pag-aalsang pang-on-Demand Holder na idyoma para sa pagiging simple at kahusayan.
- Ensure ang singleton chief ay ipinahayag na madaling sumingaw kung gumagamit ng double-checked na pag-locking.
- Iwasan ang di - kinakailangang pakikipagtulungan upang mapasulong ang iyong pagtakbo.
- Subuking maigi ang mga pagpapatupad ng isangton sa ilalim ng mga kalagayang multi-treaded.
Pagsasaayos
Ang pag-implement ng isang sinulid-ligtas na singleton na padron ay nangangailangan ng maingat na pagsasaalang-alang ng mga pamamaraang komputasyonal. Ang prehistorisasyon-on-Demand Holder na idyoma ay nagbibigay ng malinis at mahusay na solusyon, habang ang double-checked locking ay nagbibigay ng kakayahang umangkop sa wastong madaling sumingaw na paggamit. Ang pagsunod sa mga pinakamahusay na gawain ay tumitiyak ng maaasahang ugaling pang-isahan sa mga aplikasyong multi-kabasa.