Futures är ett elegant sätt att uttrycka parallellism i funktionella program. Men att kombinera terminer med nödvändig programmering (som i C++ eller i Java) kan leda till skadliga fel i form av dataraser och dödläge, som en följd av okontrollerad dataflöde genom muterbart delat minne. I denna artikel introducerar vi Känd Joins (KJ) egendom för parallella program med terminer, och relaterar den till Deadlock Freedom (DF) och Data-Race Freedom (DRF) egenskaper. Vår uppsats ger två viktiga teoretiska resultat: 1) DRF innebär KJ, och 2) KJ innebär DF. Dessa resultat visar att data-race frihet är tillräcklig för att garantera dödläge frihet i program med terminer som bara manipulera osynkroniserade delade variabler. Såvitt vi vet är dessa de första teoretiska resultaten för att etablera tillräckliga villkor för dödlägesfrihet i tvingande parallella program med framtider, och för att karakterisera den undergrupp av dataraser som kan utlösa dödläge (de som bryter mot KJ:s egendom). Från resultat 2) utvecklade vi ett verktyg som undviker dödlägen i linjär tid och rum när KJ innehar, d.v.s. när det inte finns några dataraser bland referenser till terminer. När KJ misslyckas, rapporterar verktyget datakapplöpningen och tillval faller tillbaka till en standard dödlägesundvikande algoritm genom cykeldetektering. Vårt verktyg verifierade en datauppsättning av 2 300 students läxlösningar och hittade ett låst program. De resultat som erhållits från vårt verktyg är mycket uppmuntrande: en maximal avmattning på 1,06× på en 16-kärnig maskin, alltid överträffande dödläge undvikande via cykel-detektion. Bevis på de två huvudsakliga resultaten formaliserades med hjälp av Coq bevis assistent.
Cogumbreiro m.fl. använda Armus i samband med ett verktyg som specialiserar sig på att undvika dödläge som orsakas av futures REF.
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}