Хотя ответы на ваш вопрос могут зависеть от многих факторов, я думаю, что важным аспектом, который следует учитывать, является то, как наилучшим образом использовать несколько процессоров на вашем компьютере. Как вы описываете здесь, подход к очереди сообщений с одним потоком, обрабатывающим все сообщения, не оптимален, если ваша машина имеет несколько процессоров. Один поток, обрабатывающий все сообщения, может максимально использовать один ЦП, тогда как другие потоки будут недостаточно использовать другие доступные ЦП. Подход с общим состоянием потенциально может лучше использовать преимущества нескольких ЦП.
Однако другой подход состоит в том, чтобы модифицировать алгоритм очереди сообщений, используя несколько потоков — на один или два меньше числа процессоров — очищающих очередь и обрабатывающих сообщения одновременно. Это дает вам некоторый контроль над использованием ЦП, особенно если у вас есть возможность привязать определенные потоки к конкретным ЦП. Такая высокая степень контроля может сделать многопоточную версию очереди сообщений более предпочтительной, чем совместно используемое состояние.
Предположение, что этот ответ актуален, связано с тем фактом, что многие машины в настоящее время имеют несколько процессоров. Если это не относится к вашей ситуации, то, пожалуйста, дайте более подробное описание ваших граничных условий и что вы подразумеваете под производительностью, когда говорите «превзойти».
person
Reinier Torenbeek
schedule
19.10.2012