|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:17 pm
| Автор |
Съобщение |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
баси...какво ли не се изписа. значи, аз не ползвам тоя обект, но се басирам че е реализиран със примитивите на виндовса. някой каза че може да не се ползват - това не е вярно. някои частни случаи могат да се защитят само със volatile променливи (такива които не се оптимизират), но в общия случай няма решение. за защита от критичните секции е необходим примитив, който може на един такт да бъде заключен и проверен. ако нямаме такъв примитив, синхронизацията е невъзможна. по принцип най-простия синхронизационен примитив във виндовса е мутекса. мутекса позволява само на един собственик да държи даден ресурс, като тези които не го държат, зависват върху функцията WaitForSingleObject. аз лично си ползвам директно примитивите на виндовса и мисля че са направени много добре, бих казал че няма как повече да се упростят.
|
| Сря Яну 04, 2006 9:16 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
volatile само това ли значи - липса на оптимизация? 
|
| Сря Яну 04, 2006 10:21 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
да доколкото знам. трябва да се ползват volatile променливи, щото иначе може да циклиш и да чакаш да стане някой флаг 1, а той отдавна да е станал, но в паметта, а регистъра който го е заредил си стои непроменен.
|
| Чет Яну 05, 2006 7:36 pm |
|
 |
|
danov
Ранг: Минаващ
Регистриран на: Вто Ное 16, 2004 4:43 pm Мнения: 85 Местоположение: София
|
Значи, че тази променлива може да се променя от вън - например прекъсване, друг thread или процес. И в този случай програмата трябва винаги да ползва стойноста и от паметта, а не да я зарежда и държи в регистър.
|
| Чет Яну 05, 2006 7:39 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 18 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|