Есть ли способ избежать блокировки 1 потока. net? - PullRequest
0 голосов
/ 10 июля 2020

дюйм. NET (моно на Windows в моем случае), у меня такая ситуация:

// Thread 1
for (int i=0;i<200;i++) {
  lock(myLock_) {
    doLowPriWork();
  }
}

.

// Thread 2
function importantEvent() {
  lock(myLock_) {
    doHighPriWork();
  }
}

Здесь похоже на поток 2 никогда не захватит блокировку, пока для l oop в потоке 1 полностью не завершится, похоже, у него должна быть возможность захватить блокировку между l oop итерациями.

Я понимаю, что это Операционная система определяет порядок блокировок, но есть ли какой-нибудь доступный API для получения желаемого поведения блокировки (FIFO?)? (Кроме переключения на какую-то рабочую очередь с сортировкой по приоритету в моем приложении).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...