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