Resonemang om riktigheten av multitrådade program kompliceras av risken för oväntade störningar mellan trådar. Tidigare arbete med att kontrollera trådinterferens fokuserade på att verifiera rasfrihet och/eller atomicitet. Tyvärr är rasfriheten otillräcklig för att förhindra oavsiktlig trådstörning. Begreppet atomblock ger mer semantiska garantier, men ger begränsade fördelar för icke-atomiska koder och kräver tvåmodala sekventiella/flertrådiga resonemang (beroende på om koden finns inuti eller utanför ett atomblock). I detta dokument föreslås en alternativ strategi som använder sig av kommentarer för att kontrollera trådinterferens, och vi presenterar ett effektsystem för att kontrollera att dessa kommentarer är korrekta. Effekten systemet garanterar att för varje förebyggande schemalagd utförande av ett välformat program, det finns en motsvarande kooperativ utförande med motsvarande beteende där sammanhangsbyten sker endast vid avkastning annoteringar. Detta effektsystem möjliggör samarbete resonemang: programmeraren kan anta den förenklade antagandet av kooperativ schemaläggning, även om programmet fortfarande kör med förebyggande schemaläggning och / eller sann samstämmighet på multicore processorer. Till skillnad från bimodal sekventiellt/flertrådigt resonemang kan samverkande resonemang tillämpas på alla programkoder. Nyckelord Effektsystem, avkastning, atomicitet, rasförhållanden Tillstånd att göra digitala eller hårda kopior av hela eller delar av detta arbete för personligt bruk eller klassrumsbruk beviljas utan avgift under förutsättning att kopior inte görs eller distribueras för vinst eller kommersiell fördel och att kopior är försedda med detta meddelande och den fullständiga citeringen på första sidan. För att kopiera på annat sätt, för att återpublicera, för att posta på servrar eller för att omfördela till listor, krävs tidigare specifik behörighet och/eller avgift. TLDI'10 januari 23, 2010, Madrid, Spanien. Upphovsrätt c 2010 ACM 978-1-60558-891-9/10/01. ... $10.00 Kategorier och ämnesdeskriptorer Flera trådar av kontroll används ofta i mjukvaruutveckling eftersom de bidrar till att minska latens och öka genomströmningen på multicore och multiprocessor maskiner. Resonemang om beteendet och korrektheten hos multitrådad kod är dock svårt, på grund av behovet av att överväga alla möjliga interleavevings av de olika trådarna. Metoder för att specificera och kontrollera interferensen mellan trådar är därför avgörande för en kostnadseffektiv utveckling av tillförlitlig multitrådad programvara. Race Freedom Tidiga försök att kontrollera trådinterferens fokuserade på rasförhållanden, där två trådar får tillgång till en delad variabel samtidigt, och minst en åtkomst är en skrift. Rasfrihet säkerställer att trådinterferens endast förekommer vid vissa åtgärder (de som manipulerar flyktiga variabler, lås, semaforer, etc). I sig själv förhindrar inte rasfriheten helt och hållet fel på grund av oväntade interaktioner mellan trådar. Vi illustrerar denna begränsning via följande kod, där den delade variabeln x skyddas av låset m, och t är en trådlokal variabel: förvärva(m); t = x; release(m); t = t + 1; förvärva(m); x = t; release(m); Även om denna kod är rasfri, kanske den inte har den förväntade effekten av att öka m med 1, på grund av störningar från andra trådar. Liknande men mindre uppenbara fel uppstår i praktiken, ofta via flera samtal till synkroniserade metoder [19]. Atomicitet Motiverad av denna begränsning av rasfrihet, mycket senaste arbete [5, 6, 18-23, 27, 40, 49-52] har använt atomblock för att ange var trådinterferens kan förekomma. Program kan använda traditionella synkroniserings idiomer (lås, etc.) för att säkerställa att atomblock inte kan påverkas av interleaved-åtgärder av samtidiga trådar. Atomblocket annoteringar i ett program är korrekta om någon exekvering spår är serialiserbara, det vill säga, motsvarar ett seriellt spår där atomblock utför kontinuerligt, utan interleaded åtgärder av andra trådar. Atomblock är tillgängliga för sekventiella resonemang, vilket avsevärt förenklar efterföljande korrekta argument. Trots fördelarna med atomkraften lider den av två betydande begränsningar. För det första tvingar atomkraften en form av tvåmodalt, sekventiellt/flertrådigt resonemang. För att illustrera denna punkt, överväga den enkla kodfragment 1 : x++ Om sekventiell resonemang är giltigt, då denna kod är en enkel ökning operation. Om flertrådig resonemang krävs, då denna kod blir en potentiellt icke-atomisk läs-modifiera-skriv sekvens (utan syntaktiska tips för att återspegla denna havsförändring från traditionella semantik semantik).
Medan begreppet atomäritet är mycket fördelaktigt när resonemang om atomära metoder, är det mindre användbart att dokumentera trådinterferens i icke-atomiska metoder REF.
Effects for cooperable and serializable threads
{'venue': "TLDI '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}