Forum » Programiranje » VB.NET...al pa C#
VB.NET...al pa C#
Looooooka ::
trenutno koncujem eno server aplikacijo in sem zarad sinhronizacije pisanja v bazo prisiljen da tega pac ne pocne vec threadov naenkrat.
Vse ok in sploh ni problemov...ampak ker je branje dataseta in datatabel thread-safe me zanima ce se komu sanja kako bi naredil naslednjo stvar:
-tisti threadi,ki laufajo procedure,ki vsebujejo pisanje po bazi se pac tako kot ze zdej dajem s custom semaphor classom laufajo ena za drugo (1 thread na enkrat...).
Zdej pa ker mam se povezave s klientov(remoting) bi rad tem klientom...ki pac laufajo cist druge procedure omogocil da za razliko oz zgoraj omenjenih tecejo tudi v vec threadih na enkrat ker ni nobenga pisanja v bazo.
Se prav a obstaja kksna moznost da mas nekak 2 semaforja s tem da enemu dodelis ene threade(in se tm pac samo 1 na enkrat izvaja) drugemu pa dodelis druge threade...kjer se pa recimo smejo izvajat tud 3 naenkrat.
In ja masina na keri bo zadeva laufala bo mela vec procesorjev tko da ce bi se dal to resit bi se poznalo =)
thank you!
Vse ok in sploh ni problemov...ampak ker je branje dataseta in datatabel thread-safe me zanima ce se komu sanja kako bi naredil naslednjo stvar:
-tisti threadi,ki laufajo procedure,ki vsebujejo pisanje po bazi se pac tako kot ze zdej dajem s custom semaphor classom laufajo ena za drugo (1 thread na enkrat...).
Zdej pa ker mam se povezave s klientov(remoting) bi rad tem klientom...ki pac laufajo cist druge procedure omogocil da za razliko oz zgoraj omenjenih tecejo tudi v vec threadih na enkrat ker ni nobenga pisanja v bazo.
Se prav a obstaja kksna moznost da mas nekak 2 semaforja s tem da enemu dodelis ene threade(in se tm pac samo 1 na enkrat izvaja) drugemu pa dodelis druge threade...kjer se pa recimo smejo izvajat tud 3 naenkrat.
In ja masina na keri bo zadeva laufala bo mela vec procesorjev tko da ce bi se dal to resit bi se poznalo =)
thank you!
frudi ::
če dovoliš samo en thread naenkrat, lahko uporabiš monitor class. temu lahko podaš različen objekt za zaklenit, glede na to, kaj se zapisuje v bazo. za prve threade (ki pišejo v bazo 1 naenkrat) uporabiš vedno isto instanco nekega globalnega objekta, za druge pa ob vsakem zapisovanju v bazo ustvariš nov lock object. nekaj v tem stilu:
object m_lockObject = new Object(); public void ProceduraKiPiseVBazo(<parametri>) { object lockObject; ... if (<pogoj, po katerem identificiraš za katero vrsto threada gre>) lockObject = m_lockObject; //po en thread naenkrat... else lockObject = new Object(); //navali narod... ... Monitor.Enter(lockObject); ... <zapisovanje v bazo> ... Monitor.Exit(lockObject); ... }
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
Looooooka ::
ja se mi je zdel da sm ime mal zaj...ampak seveda po tem ko sm kliknu poslji spremenit se pa ne da.
bom pazu naslednic =).
frudi hvala...bom pogledu ce lahko tole ponucam ne da bo treba cel program prepisat.
bom pazu naslednic =).
frudi hvala...bom pogledu ce lahko tole ponucam ne da bo treba cel program prepisat.
Looooooka ::
probu...mogu se mal threade z mutex classom v red spravt in kombinacija enga in druzga dela super.Nobenih exceptionov vec ko updejtam dataset pa se class k ga mam za updejtanje je zdej thread safe.
me so happy =)
thank you again!
me so happy =)
thank you again!
frudi ::
ql, lepo da dela :)
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [UWP] [C#]Oddelek: Programiranje | 4173 (2203) | BivšiUser2 |
» | [Android] Nov tip shranjevanja slikeOddelek: Programiranje | 2180 (1304) | urosz |
» | [VB] datagridviewOddelek: Programiranje | 1934 (1317) | korenje3 |
» | [QT/C++] Spreminjanje objektov na glavnem oknu iz QThread-aOddelek: Programiranje | 813 (684) | c0dehunter |
» | POMOČ: C# Spremenitev spremenljivke medtem ko teče ukaz whileOddelek: Programiranje | 1636 (1393) | Ericssony |