Что такое мьютекс?

572
задан bmurphy1976 29 August 2008 в 15:59
поделиться

6 ответов

Когда у меня есть большое горячее обсуждение на работе, я использую резиновую курицу, которую я держу в своем столе для просто таких случаев. Человек, держащий курицу, является единственным человеком, которому разрешают говорить. Если Вы не держите курицу, Вы не можете говорить. Можно только указать, что Вы хотите курицу и ожидаете, пока Вы не получаете ее перед разговором. Как только Вы закончили говорить, можно возвратить цыпленка модератору, который вручит его следующему человеку, который будет говорить. Это гарантирует, чтобы люди не говорили друг по другу, и также имели свое собственное пространство для разговора.

Цыпленок Замены со Взаимным исключением и человек с потоком и у Вас в основном есть понятие взаимного исключения.

, Конечно, нет такой вещи как резиновое взаимное исключение. Только резиновая курица. У моих кошек однажды была резиновая мышь, но они съели ее.

, Конечно, перед использованием резиновой курицы необходимо спросить себя, нуждаетесь ли Вы на самом деле в 5 людях в одной комнате и были бы он не только быть легче с одним человеком в комнате на их собственном выполнении всей работы. На самом деле это просто расширяет аналогию, но Вы получаете идею.

1954
ответ дан iwasrobbed 29 August 2008 в 15:59
поделиться

Взаимное исключение является взаимоисключающим флагом. Это действует как контролер к разделу кода, позволяющего одному потоку войти и блокирующего доступ ко всем другим. Это гарантирует, что код, которым управляют, будет только поражен единственным потоком за один раз. Просто обязательно выпустите взаимное исключение, когда Вы будете сделаны.:)

113
ответ дан Craig 29 August 2008 в 15:59
поделиться

Взаимное исключение. Вот статья в Википедии о нем:

http://en.wikipedia.org/wiki/Mutual_exclusion

точка взаимного исключения должна синхронизировать два потока. Когда у Вас есть два потока, пытающиеся получить доступ к единственному ресурсу, общий шаблон должен иметь первый доступ попытки блока кода для установки взаимного исключения прежде, чем ввести код. Когда второй код блокирует доступ попыток, он видит, что взаимное исключение установлено и ожидает, пока первый блок кода не завершен (и сбрасывает взаимное исключение), затем продолжается.

Определенные детали того, как это выполняется, очевидно, варьируются значительно языком программирования.

66
ответ дан TheSmurf 29 August 2008 в 15:59
поделиться

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

понятие называют "взаимным исключением" (короткое Взаимное исключение) и является способом гарантировать, что только один поток позволяется в той области, с помощью того ресурса и т.д.

, Как использовать их, конкретный язык, но часто (если не всегда) на основе взаимного исключения операционной системы.

Некоторым языкам не нужна эта конструкция, из-за парадигмы, например, функциональное программирование (Haskell, ML хорошие примеры).

Теперь, пойдите, спрашивает Google, как использовать их!:)

45
ответ дан Marcus Junius Brutus 29 August 2008 в 15:59
поделиться

В C# общее используемое взаимное исключение Монитор . Тип' Система. Поточная обработка. Монитор '. Это может также использоваться неявно через' блокировка (Объект) ' оператор. Один пример его использования при построении Singleton-класса.

private static readonly Object instanceLock = new Object();
private static MySingleton instance;
public static MySingleton Instance
{
    lock(instanceLock)
    {
        if(instance == null)
        {
            instance = new MySingleton();
        }
        return instance;
    }
}

оператор блокировки с помощью частного объекта блокирования создает критический раздел. Требуя, чтобы каждый поток ожидал, пока предыдущее не закончено. Первый поток введет раздел и инициализирует экземпляр. Второй поток будет ожидать, входить в раздел и получать инициализированный экземпляр.

Любой вид синхронизации статического участника может использовать оператор блокировки так же.

26
ответ дан Radiodef 29 August 2008 в 15:59
поделиться

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

11
ответ дан 18hrs 29 August 2008 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: