Avatar billede lasse_32 Nybegynder
10. november 2004 - 14:08 Der er 2 kommentarer og
4 løsninger

Deadlocks ved TTS

Hvordan undgår man deadlocks ved TTS?
Avatar billede lasse_32 Nybegynder
10. november 2004 - 17:31 #1
Jeg har set et test spgsm., hvor der er blandt andet følgende muligheder:
1. Ved at anvende TTS Commit i samme rækkefølge som TTS Begin
2. Ved at anvende TTS Commit i omvendte rækkefølge som TTS Begin.

Jeg mener selv den sidste er det rigtige svar. Nogen bud?
Avatar billede mariaf Juniormester
10. november 2004 - 18:37 #2
Det er en evigt tilbagevendende diskussion. I praksis pakkes der i makroer, som så kaldes med TTS(%1) (Begin/COmmit), hvilket medfører at man anvender svar 1 - samme rækkefølge. Jeg lærte det med at når man starter TTSBEGIN, så kopier man hele striben til en TTSCOMMIT i samme arbejdsgang, så man er sikker på at få lukket igen. Det giver også samme rækkefølge.
Avatar billede tommypedersen Nybegynder
10. november 2004 - 21:02 #3
Hvad er deadlock?

Bruger1 låser kartotek1 og samtidig låser bruger2 kartotek2. Herefter prøver bruger1 at låse kartotek2 og bruger2 prøver at låse kartotek1.

Herefter står begge stille og venter på låsninger fra den anden bruger.

Hvis man fyrer alle TTSBEGIN af efter hinanden, vil tidsafstanden mellem de enkelte TTS' være meget kort og måske kunne minimere chancen for en lock situation.

Jeg plejer at committe i omvendt rækkefølge, men i C5/XAL applikationen er den af mariaf beskrevne metode med TTS(%1) meget benyttet.

Men deadlock opstår i forb. med TTSBEGIN og ikke TTSCOMMIT for npr man TTSCOMMIT'er har man jo fuld kontrol over kartoteket.

//Tommy
Avatar billede lasse_32 Nybegynder
10. november 2004 - 23:27 #4
Hmmm, jeg forstår ikke, at man kan gøre det i samme rækkefølge. For lige at få det på plads, så mener jeg med omvendt rækkefølge, at man comitter det kartotek først, som man kørte en begin på sidst.

Man er vel nødt til at comitte TTS'erne indefra i koden for så at bevæge sig ud til yderste niveau... eller hvad? Det lyder ikke til at der er helt enighed... man kan måske gøre begge dele!?
Avatar billede mariaf Juniormester
10. november 2004 - 23:35 #5
Der er ikke spor enighed. Pointen er at man skal låse kartoteker kortest muligt tid, men da man bruger TTS for at sikre konsistens - hvilket er vigtigtere - så låses ofte flere kartoteker, som oplåses relativt samtidigt.
Avatar billede tommypedersen Nybegynder
11. november 2004 - 07:20 #6
I C5/XAL benyttes ofte den metode hvor et antal kartoteker låses og låses op i samme rækkefølge og ikke som du L32 beskriver det i omvendt rækkefølge.

Hvis man benytter en macro som mariaf beskriver det vil de blive åbnet og lukket i samme rækkefølge.

//Tommy
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester