2014-11-20 3 views

ответ

0

Я точно не знаю, как ответить на этот вопрос, но вот мои идеи:

  1. Я считаю, что это было бы очень маловероятно, что это произойдет в точной одновременно.

  2. Для каждого потока может быть приоритет. Поток с наивысшим приоритетом получит блокировку. Этот приоритет может быть явно сохранен, например, целочисленное значение, или может быть какой-то другой метрикой (например, в случае, когда поток имеет больше времени, например.)

  3. Другой примитивный метод должен всегда обеспечивать блокировку поток работает на нижнем номере «cpu». Это будет простой выключатель.

  4. Многие из последних алгоритмов блокировки будут работать поэтапно. Поэтому в любой момент может быть n потоков с «желанием» для некоторой блокировки. Как правило, они будут стоять в очереди, возможно, с некоторым приоритетом (как упоминалось выше).

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

+0

Это может произойти в то же время из-за многоядерного процессора. Каждый поток может работать в другом ядре и может попытаться получить блокировку в одно и то же время. –

+0

Работа процессора в микросекундном масштабе - маловероятно, что два потока будут захватывать один и тот же замок с некоторой микросекундной детализацией. – Future