У меня есть существующее приложение, написанное на C++, которое выполняет ряд задач в настоящее время, считывая transactiosn из базы данных для всех клиентов, обрабатывая их и записывая результаты назад.Обертка неуправляемого кода с использованием нескольких процессоров
Что я хочу сделать, так это иметь несколько версий этого параллельного запуска на отдельных машинах для увеличения пропускной способности транзакций путем назначения определенного подмножества клиентов каждой версии приложения, чтобы не было необходимости в конкуренции или обмене данными, следовательно, никакой блокировки или синхронизации.
Что бы я хотел сделать, это иметь несколько версий, работающих на одной машине, а также распределенных между другими машинами, поэтому, если у меня есть четырехъядерный ящик, будет четыре экземпляра приложения, каждый из которых использует один из процессора.
Я буду обертывать код C++ в .NET C# интерфейсе и управлять всеми этими процессами - локальным и распределенным из родительской службы управления C#, ответственной за создание, запуск и остановку процессов, а также всю связь и управление между ними ,
Что я хочу знать, если я создаю четыре экземпляра каждый в отдельном фоновом потоке на четырехъядерном ящике, независимо от того, будут ли CLR и .NET автоматически распределять нагрузку на четыре процессора на каждом поле или мне нужно что-то сделать, чтобы использовать возможности параллельной обработки?
Перед запуском вы можете установить [сродство к процессу] (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.processoraffinity.aspx). –
Причина, по которой я решал сделать это через процессы и процесс управления, - это то, что я хотел иметь возможность запускать и создавать процессы на разных серверах, местах и т. Д. Если в ящике есть 4 процессора, то в идеале четыре потока будут оптимальными, но Я могу, например, использовать 15 потоков, разбитых на 4 ящика. Который в этом случае приведет к 4 процессам, некоторые из которых состоят из 4 потоков, а один - с 3, что будет намного сложнее управлять, контролировать состояние сети и запускать/выключать удаленно – NZJames