C++: Вопрос
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
C++: Вопрос
Подскажите в чем разница между сeмафорами, мютексом (что это такое?) и декью?
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
А причём тут 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".
Семафор разрешает заданному числу потоков войти в 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 13 ноя 2006, 19:05, всего редактировалось 1 раз.
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- sz
- Маньяк
- Сообщения: 1266
- Зарегистрирован: 17 фев 2003, 19:34
Вообще-то, ядро там только одно. Это у xbox их три штуки.Marmot писал(а):Кстати, как это дело обстоит у PS3?
Там же ядер хрен знает сколько...
А у ps3 одноядерный центральный (он называется PPU) и еще 7 штук дополнительных (они называются SPU). Но синхронизироваться обычными примитивами между ними не надо - у каждого своя память. Обмениваются содержимым через воззвания к DMA контроллеру.
SPU вообще процессор крайне экзотический. На нем многих команд попросту нет. С памятью он работает примерно как 8086 - линейное пространство из 256K и никакой виртуальности. Здравствуй DOS, короче говоря.
Нам к ним пришлось собственный printf писать и тому подобное. Сейчас, например, пишем систему для overlay - аналог DLL только попримитивнее - память нужно экономить. Не хватает места для данных, попробуем часть кода отгрузить.
- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53