Re[2]: volatile у переменной класса
От: execve  
Дата: 21.06.05 03:48
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>volatile не имеет никакого отношения к multithreading, поэтому его применение в этой ситуации не только бесполезно, но может быть и вредно, так как с volatile компилятор не сможет соптимизировтать доступ к этой переменной. Но если один из потоков изменяет переменную, синхронизация при помощи мютексов обязательна.


bool flag;

// thread 1
...
flag = false;
while(!flag) {
    ...
    sleep(1);
}
...

//thread 2
...
flag = true;
...


VC6 в процессе оптимизации переносил переменную flag в первом потоке в регистр, в результате чего цикл оказывался вечным.
И был вобщем-то прав.

Можешь добавить мьютексов по вкусу — проблему это не решит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.