Зачем вам отказываться от процессора? Ну ...
Я исправляю ошибку в клиентском коде. По сути, они имеют общую структуру, которая содержит информацию:
- сколько монет на условном депозите - вернуть их
- сколько счетов в условном депозите - вернуть их
Вышеуказанное выполняется в процессе A. Остальная часть кода находится в процессе B. Процесс B отправляет сообщения процессу A для вычисления и возврата денег в условном депонировании (это торговый автомат). Не вдаваясь в историю , почему код написан таким образом, исходная последовательность кода:
(Процесс Б)
отправить сообщение RETURN_ESCROWED_BILLS для обработки A
отправить сообщение RETURN_ESCROWED COINS для процесса A
Обнулить общую структуру
Это выполняется как:
(Процесс B):
отправлять сообщения;
обнулить структуру;
(позже .. Процесс А):
получать сообщения;
все поля в общей структуре равны 0;
нечего делать;
упс ... деньги все еще на условном депозите, но процесс Код потерял эти знания. Что действительно необходимо (кроме массивной реструктуризации кода):
(Процесс B):
отправлять сообщения;
уступить ЦП;
(процесс А):
определить депонированные деньги и вернуть;
уступить ЦП; (можно просто перейти к концу временного интервала, особого метода не требуется)
(процесс B):
обнулить общую структуру;
Каждый раз, когда у вас есть сообщения IPC и процессы, которые отправляют / получают сообщения, тесно связаны . лучший способ - это двустороннее рукопожатие. Тем не менее, существуют случаи (как правило, в результате плохой или несуществующей конструкции), когда необходимо тесно связывать процессы, которые, как предполагается, должны быть слабо связаны. Обычно производительность процессора - это хак, потому что у вас нет выбора. Добавление многоядерных процессоров является источником боли, особенно при переносе с одного ядра на многоядерный.