Övergående fel som uppstår i storskaliga mjukvarusystem kan ofta repareras genom att den kod i vilken de förekommer återexekveras. Att teckna en meningsfull semantik för säker återutförande i multitrådad kod är dock inte uppenbart. För att en tråd ska kunna köras om korrekt måste den se till att alla andra trådar som har bevittnat dess oönskade effekter inom den regionen också återgår till ett meningsfullt tidigare tillstånd. Om det inte görs på rätt sätt, data inkonsekvenser och annat oönskat beteende kan resultera. Men att automatiskt bestämma vad som utgör en konsekvent global kontrollpunkt är inte enkelt eftersom trådinteraktioner är en dynamisk egenskap hos programmet. I detta dokument presenterar vi en säker och effektiv kontrollmekanism för samtida ML (KML) som kan användas för att återhämta sig från övergående fel. Vi introducerar en ny språklig abstraktion kallad stabilisatorer som möjliggör specificering av per-tråd monitorer och återställande av globalt konsekventa kontrollpunkter. Säkra globala stater beräknas genom lätt övervakning av kommunikationshändelser bland trådar (t.ex. message-passing-åtgärder eller uppdateringar av delade variabler). Vi presenterar en formell karakterisering av dess design, och ger en detaljerad beskrivning av dess genomförande inom MLton, en hel-program optimera kompilator för Standard ML. Våra experimentella resultat på mikrobenchmarks samt flera realistiska, flertrådiga, serverstil KML-applikationer, inklusive en webbserver och en fönsterverktygslåda, visar att overheads för att använda stabilisatorer är små, och leder oss att dra slutsatsen att de är en livskraftig mekanism för att definiera säkra kontrollpunkter i samtidiga funktionella program. Denna förordning träder i kraft den tjugonde dagen efter det att den har offentliggjorts i Europeiska unionens officiella tidning.
Ziarek m.fl. REF införa en kontrollpunkt abstraktion för samtidiga ML-program.
Lightweight Checkpointing for Concurrent ML
{'venue': 'J. Funct. Program.', 'journal': 'J. Funct. Program.', 'mag_field_of_study': ['Computer Science']}