Tel-Ran Students Forum

Forum for Tel-Ran students learning Java
 
HomeHome  FAQFAQ  SearchSearch  RegisterRegister  Log in  

Share | 
 

 Volatile

View previous topic View next topic Go down 
AuthorMessage
Next
Admin
avatar

Сообщения : 12
Дата регистрации : 2016-01-14

PostSubject: Volatile   6/2/2016, 19:40

В компьютере есть память, где хранятся данные и команды (код), а также процессор, который исполняет эти команды и работает с данными. Процессор считывает данные из памяти, изменяет и записывает их обратно в память. Чтобы ускорить работу процессора в него встроили свою «быструю» память – кэш.
Чтобы ускорить свою работу, процессор копирует самые часто используемые переменные и области памяти в свой кэш и все изменения с ними производит в этой быстрой памяти. А после – копирует обратно в «медленную» память. Медленная память все это время содержит старые(!) (неизмененные) значения переменных.
И тогда может возникнуть проблема. Одна нить меняет переменную, такую как isCancel или isInterrupted из примера выше, а вторая нить «не видит» этого изменения, т.к. оно было совершено в быстрой памяти. Это следствие того, что нити не имеют доступа к кэшу друг друга. (Процессор часто содержит несколько независимых ядер и нити физически могут исполняться на разных ядрах.)
Back to top Go down
http://tel-ran.forumisrael.net
 
Volatile
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Boilermate 2000 with Glow Micron 40ff causing reset

Permissions in this forum:You cannot reply to topics in this forum
Tel-Ran Students Forum :: Java-12j :: Classworks-
Jump to: