Win VC++ Lock-free компонент
Здраствуйте ув. комьюнити,
Разрабатываю сабж, к сожалению опыта в написание лок-фри компонентов нет, а то что прочитал как то не уверенно засело в моей голове. Так что помогите плиз кто в теме.
Судя по msdn, доступ к volotile переменной(начиная с компилятора VC++ 2005) является как бы мемори барьером как с точки зрения кпу та и сточки зрения компилятора. Правилильно ли я понимаю, если у меня есть два потока ридер и врайтер, то если я напишу что то вроде:
Reader Thread:
void someClass::renderSomething(){
if(sync){
renderer->renderSomething(data->getSomething());
}
}
Writer Thread:
void someClass::changeSomething(){
data->changeSomething();
sуnc=1;
}
(Преполагая что sуnc volotile переменая, а data глобальная переменая или мембер класа) то таким образом сам доступ к volotile переменой в порядке описаном выше, гарантирует видимость изменений, сделаных в врайтер потоке, ридер потоку?

12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів