У меня есть статический список объектов. Во время программы создается много потоков. Сразу после создания каждого потока создается новый объект и добавляется в статический список. В программе есть еще один поток, ответственный за итерирование по статическому списку.Создать Mutex с приоритетным наследованием в C#
Предположим, что поток с низким приоритетом «A» является доступом к списку, а другой поток с более высоким приоритетом «C» также запрашивает доступ к нему, май (в редком случае), этот поток со средой приоритет «B», который существует в системе, получит процессорное время «A». Итак, «C» будет ждать «B», вопреки здравому смыслу.
Как я могу получить блокировку в Список, не вовлекаясь в эту проблему инверсии приоритетов?
Функция 'Lock()' может помочь?
Спасибо!
Нет, 'lock' не поможет. Также не будет класса «Mutex». Это FIFO. Насколько я помню, все объекты синхронизации Windows являются FIFO. Какую проблему вы действительно пытаетесь решить? Это необычно для объектов синхронизации, чтобы вызвать серьезную проблему инверсии приоритета. Если они это сделают, я бы предположил, что дизайн приложения не такой, каким он должен быть. –
Я хочу добавить список, который будет доступен для многих процессов. –
Что здесь означает «доступно»? Являются ли приоритетные потоки и потоки с низким приоритетом как добавлением, так и удалением элементов? В первую очередь, чтение, но иногда писать?Итерирование по списку и выполнение сложных операций? Не зная больше о том, как осуществляется доступ к списку, невозможно сделать какие-либо рекомендации или даже определить, является ли приоритетная инверсия потенциальной проблемой. –