C++: Вопрос

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
tiasur
Маньяк
Сообщения: 1510
Зарегистрирован: 26 фев 2006, 10:00
Откуда: offline

C++: Вопрос

Сообщение tiasur »

Подскажите в чем разница между сeмафорами, мютексом (что это такое?) и декью?
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение 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".
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Сообщение sz »

В виндах так:

Семафор - это безопасный в смысле параллелизма счетчик. Использование имеет смысл только между процессами, потому что между потоками можно считать атомиками (это такие процессорные команды специально для безопасных счетчиков).

Мютекс - это такой лок, когда нужно защитить какие-то данные от чтения/записи другим потоком/процессом. Опять же, имеет смысл только между процессами, потому что потоки лучше синхронизировать критической секцией - она намного быстрее работает.

А декью - это вообще из другой оперы. Видимо затесалось сюда из какого-то примера по синхронизации очередей...
Последний раз редактировалось sz 13 ноя 2006, 19:05, всего редактировалось 1 раз.
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Кстати, как это дело обстоит у PS3?
Там же ядер хрен знает сколько...
Аватара пользователя
sz
Маньяк
Сообщения: 1266
Зарегистрирован: 17 фев 2003, 19:34

Сообщение sz »

Marmot писал(а):Кстати, как это дело обстоит у PS3?
Там же ядер хрен знает сколько...
Вообще-то, ядро там только одно. Это у xbox их три штуки.
А у ps3 одноядерный центральный (он называется PPU) и еще 7 штук дополнительных (они называются SPU). Но синхронизироваться обычными примитивами между ними не надо - у каждого своя память. Обмениваются содержимым через воззвания к DMA контроллеру.

SPU вообще процессор крайне экзотический. На нем многих команд попросту нет. С памятью он работает примерно как 8086 - линейное пространство из 256K и никакой виртуальности. Здравствуй DOS, короче говоря.
Нам к ним пришлось собственный printf писать и тому подобное. Сейчас, например, пишем систему для overlay - аналог DLL только попримитивнее - память нужно экономить. Не хватает места для данных, попробуем часть кода отгрузить.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Marmot писал(а):The name deque is short for "double ended queue" and is usually pronounced "deck".
knuth, vol 1
Ответить