SharC är ett nyligen utvecklat system för att kontrollera datadelning i multitrådade program. Programmerare specificerar delningsregler (read only, skyddas av ett lås, etc.) för enskilda objekt, och SharC-kompilatorn tillämpar dessa regler med hjälp av statiska och dynamiska kontroller. Överträdelser av dessa regler tyder på oavsiktlig datadelning, vilket är den bakomliggande orsaken till skadliga data-spårningar. Dessutom tillåter SharC programmerare att ändra delningsreglerna för ett visst objekt med hjälp av ett delningskast, för att fånga det faktum att delningsregler för ett objekt ofta ändras under objektets livstid. SharC applicerades framgångsrikt på ett antal flertrådiga C-program. Men många program är inte lätt att kontrollera med SharC eftersom deras delningsregler, och ändringar av delningsregler, effektivt gäller för hela datastrukturer snarare än för enskilda objekt. Vi har utvecklat ett system som heter Shoal för att ta itu med denna brist. Förutom delningsregler och delning av SharC innehåller vårt system ett nytt koncept som vi kallar grupper. En grupp är en samling objekt som alla har samma delningsläge. Varje grupp har en framstående medlem som kallas gruppledaren. När gruppledarens delningsläge ändras genom en delning, ändras också delningsläget för alla medlemmar i gruppen. Denna operation görs sund genom att upprätthålla den invariant som vid tidpunkten för en sharing kast, den enda externa pekaren i gruppen är pekaren till gruppledaren. Tillägg av grupper gör det möjligt att kontrollera säker samstämmighet på nivån för datastrukturer snarare än på nivån för enskilda objekt. Vi visar nödvändigheten och praktiskheten av grupper genom att tillämpa Shoal på ett brett spektrum av samtidiga C-program (den största närmar sig en miljon rader kod). I alla referensvärden grupper medför låg notation börda och inga betydande ytterligare resultat overhead.
Detta är också relaterat till delnings gjutna kommentarer kontrolleras av en kombination av statisk och dynamisk analys i SharC-verktyget REF.
Lightweight annotations for controlling sharing in concurrent data structures
{'venue': "PLDI '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}