Страница 1 из 1
C++: Вопрос
Добавлено: 10 ноя 2006, 14:07
tiasur
Подскажите в чем разница между сeмафорами, мютексом (что это такое?) и декью?
Добавлено: 10 ноя 2006, 15:33
Marmot
А причём тут C++?
Семафор разрешает заданному числу потоков войти в critical section.
А мютекс разрешает это сделать только одному потоку.
В принципе семафор может быть мютексом если его инициализиривать на один поток.
Ну а в ответ на последний вопрос я пожакуй приведу цитату которая всё объясняет:
A linear collection that supports element insertion and removal at both ends. The name deque is short for "double ended queue" and is usually pronounced "deck".
Добавлено: 10 ноя 2006, 17:31
sz
В виндах так:
Семафор - это безопасный в смысле параллелизма счетчик. Использование имеет смысл только между процессами, потому что между потоками можно считать атомиками (это такие процессорные команды специально для безопасных счетчиков).
Мютекс - это такой лок, когда нужно защитить какие-то данные от чтения/записи другим потоком/процессом. Опять же, имеет смысл только между процессами, потому что потоки лучше синхронизировать критической секцией - она намного быстрее работает.
А декью - это вообще из другой оперы. Видимо затесалось сюда из какого-то примера по синхронизации очередей...
Добавлено: 10 ноя 2006, 17:59
Marmot
Кстати, как это дело обстоит у PS3?
Там же ядер хрен знает сколько...
Добавлено: 10 ноя 2006, 18:28
sz
Marmot писал(а):Кстати, как это дело обстоит у PS3?
Там же ядер хрен знает сколько...
Вообще-то, ядро там только одно. Это у xbox их три штуки.
А у ps3 одноядерный центральный (он называется PPU) и еще 7 штук дополнительных (они называются SPU). Но синхронизироваться обычными примитивами между ними не надо - у каждого своя память. Обмениваются содержимым через воззвания к DMA контроллеру.
SPU вообще процессор крайне экзотический. На нем многих команд попросту нет. С памятью он работает примерно как 8086 - линейное пространство из 256K и никакой виртуальности. Здравствуй DOS, короче говоря.
Нам к ним пришлось собственный printf писать и тому подобное. Сейчас, например, пишем систему для overlay - аналог DLL только попримитивнее - память нужно экономить. Не хватает места для данных, попробуем часть кода отгрузить.
Добавлено: 12 ноя 2006, 07:21
ajkj3em
Marmot писал(а):The name deque is short for "double ended queue" and is usually pronounced "deck".
knuth, vol 1