dayslepr Skrevet 13. mai 2006 Del Skrevet 13. mai 2006 (endret) heisann, poster for å vise til en liten sak jeg har kallt SWTransaction .. meningen med den er å få programmet til å komme seg på beina igjen (ref. emnetittel ) etter noe går galt et program utfører flere oppgaver.. måten man forklarer maskinen hvordan den skal utføre en oppgave er å representere oppgaven som flere underoppgaver som må gjøres ferdig før den store er klar i sin helhet.. når noe går galt med en av underoppgavene, er det greit at (side)effeketen av de underoppgavene som allerede er gjennomført kanseleres .. og det er slik man kan bruke SWTransaction (i Lisp kan man som et alternativ bruke en mer "functional programming"-stil fremfor side-effects, men det er ikke altid like hensiktsmessig) her er et enkelt eksempel: http://nostdal.org/~lars/programming/lisp/...tests/test.lisp dette er så enkelt å bruke som det ser ut som (forhåpentligvis), og om du ruller litt ned på siden, så har jeg tatt med "Output when testing"; altså det som skjer når du kjører funksjonen den 'revoker' også en transaksjon når en tråd kanseleres: SWT> (withThread "test" (withTransaction nil (write-line "1") (finish-output) (revokable () ((write-line "revoking!"))) (destroyThread *current-thread*) (write-line "2") (finish-output))) 1 revoking! 2 blir altså aldri skrevet ut, men den "passer på" å kalle alle `how-to-revoke'-formene (under `revoke'-former) i et `withTransaction'-kontekst (edit: som er evaluert til nå) selv når tråden kanseleres kildekode her: http://nostdal.org/~lars/programming/lisp/swtransaction/ `withThread' og `*current-thread*' er en (selvstendig) del av Aromyxo, her: http://nostdal.org/~lars/programming/lisp/...xo/concurrency/ (wikien på hjemmesiden min er for tiden nede intill videre .. .. det er grunnen til at jeg ikke henviser direkte til denne her) Endret 13. mai 2006 av dayslepr Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå