споделени ресурси

Представете си пътник пътнически самолет в полет, и в него ресурс се споделя от всички, тъй като тоалетна. Създателите Aircraft приеме, че само един човек може да заема тази стая. Първият, който го взе, затваряне (ключалка) за достъп да се пие за всички останали. Следваща пътници, които желаят да се възползват от този ресурс може или да чакат търпеливо за освобождаването на, или след определен период от време (времето си), за да се върнат на мястото си и да продължат да правят това, което той е бил зает преди събитието. Решението за това какво да изберете и колко време да чака, да вземе пътниците. Блокиране генерира неефективно използване на ресурсите време на поддържане на втория пътник се очаква опашка, и кой е избрал различна тактика.

Връщайки се към многонишкови процеси, ние се отбележи, че ако няма ресурс блок, става възможно увреждане на данните. Представете си, че един процес поток преминава през записите в базата данни, увеличаване на заплата на всеки служител с 10%, и друга нишка в същото време се променя кодовете цип във връзка с въвеждането на новия стандарт. Съгласен съм, че е разумно да се съчетаят тези две статии, в един процес, за да се увеличи производителността. Какво може да се случи, ако не се блокира достъпа до записите в нейното изменение? Първият поток чете запис (всички полета) и е зает с повишаване на изчисление (да речем, от $ 80 000 до $ 85 000). По това време, втората нишка чете един и същи запис, за да се промени ципа. В тази ситуация, по-долу може да се случи: първо нишка поддържа модифицирана запис на новата стойност на заплатата, а вторият, връщайки рекорд с промените в индекса, възстановяване на стойността на работната заплата и служителят няма да има увеличение. Това се дължи на факта, че двата потока нямат достъп до частите запис и затова работят с всички записа, но само да променят някои от своите области.