У меня есть очередь, в которой операция постановки в очередь будет выполняться одним потоком, а операция удаления из очереди - другим. Излишне говорить, что мне пришлось реализовать для него некоторую потокобезопасность.
Сначала я попытался использовать блокировку очереди перед каждой постановкой / удалением, так как это дает лучший контроль над механизмом блокировки. Это сработало хорошо, но мой любопытный ум заставил меня проверить еще кое-что.
Затем я попытался использовать оболочку Queue.Synchronized, сохранив все остальное без изменений. Я не уверен, правда ли это, но при таком подходе производительность кажется немного выше.
Как вы думаете, на самом деле есть какая-то разница в производительности между ними, или я просто воображаю здесь ...? :)