дюйм. 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?)? (Кроме переключения на какую-то рабочую очередь с сортировкой по приоритету в моем приложении).