Отговори на тема  [ 19 мнения ]  Отиди на страница Предишна  1, 2
Critical Section 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
да доколкото знам. трябва да се ползват volatile променливи, щото иначе може да циклиш и да чакаш да стане някой флаг 1, а той отдавна да е станал, но в паметта, а регистъра който го е заредил си стои непроменен.


Чет Яну 05, 2006 7:36 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Ное 16, 2004 4:43 pm
Мнения: 85
Местоположение: София
Мнение 
Реконструктор написа:
volatile само това ли значи - липса на оптимизация? :)

Значи, че тази променлива може да се променя от вън - например прекъсване, друг thread или процес. И в този случай програмата трябва винаги да ползва стойноста и от паметта, а не да я зарежда и държи в регистър.


Чет Яну 05, 2006 7:39 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 19 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни