Trots mycket forskning om samtidiga programmeringsspråk, särskilt för Java och C/C++, har vi fortfarande inte en tillfredsställande definition av deras semantik, en som medger alla vanliga optimeringar utan att också erkänna oönskat beteende. Särskilt problematiska är de "thin-air" exemplen med högpresterande samtidiga åtkomster, såsom C/C++11 avslappnade atomer. C/C++11 modellen är i en per-candidate-utförande stil, och tidigare arbete har identifierat en spänning mellan det och det faktum att kompilatoroptimeringar inte fungerar över enstaka kandidat utföranden isolerat; snarare, de fungerar över syntaktiska representationer som representerar alla utföranden. I detta dokument föreslår vi ett nytt tillvägagångssätt som kringgår denna svårighet. Vi definierar en konvergens semantik för en kärnkalkyl, inklusive avslappnad-atomiska och icke-atomiska åtkomster, och lås, som medger ett brett spektrum av optimering samtidigt som de klassiska tunna-luft exempel. Den tar också upp andra problem som rör odefinierat beteende. Grundidén är att använda en händelse-struktur representation av nuvarande tillstånd av varje tråd, fånga alla sina potentiella utföranden, och att tillåta interleaping av utförande och omvandling steg över det för att återspegla optimering (eventuellt dynamisk) av koden. Dessa kombineras med ett delsystem för icke-multikopieringsatomisk lagring, för att återspegla vanligt hårdvarubeteende. Semantiken är definierad i en mekaniserad och körbar form, och utformad för att vara genomförbar över nuvarande avslappnad hårdvara och tillräckligt stark för att stödja de programmerings idiomer som C/C++11 gör för detta fragment. Det erbjuder en möjlig väg framåt för samtidig programmering språksemantik, utöver de nuvarande C/C++11 och Java modeller.
REF definierar en semantik för C/C++ avslappnade atomer med hjälp av händelsestrukturer som stater som används för att definiera omskrivningsregler.
A concurrency semantics for relaxed atomics that permits optimisation and avoids thin-air executions
{'venue': 'POPL 2016', 'journal': None, 'mag_field_of_study': ['Computer Science']}