Какие подводные камни встретятся Тоади на этом пути? Не знаю. Во-первых, на то они и подводные, чтобы не предполагать их наличия до самого того момента, когда больно треснешься о них большим пальцем правой ноги, заматеришься, подпрыгнешь на одной левой, наступишь на полудохлую утонувшую осу, раздавишь её, получив жало в пятку, поскользнёшься, саданёшься копчиком о непонятно откуда взявшийся в воде острый кусок щебёнки и начнёшь наслаждаться дивной картиной звёздного неба, возникшей в результате соприкосновения затылка с якобы мягким речным дном. Впрочем, лёжа в прохладных речных водах, обтекающих тебя со всех сторон (не вспоминать! Не вспоминать, что на самом деле сейчас в воде и чем в реальности ты обтекаешь!), можно и предположить:
• Нужно выяснить сколько на самом деле процессоров в системе и принять решение о запуске оптимизации в целом.
• Время выполнения задачи (не только по поиску пути) – величина неопределённая. Вычислить её заранее можно только с солидной погрешностью, и самым надёжным способом до сих пор является статистика, значит нужно непрерывно мониторить время выполнения каждой задачи.
• В зависимости от полученных результатов, нужно распределять нагрузку по процессам, при этом учитывая реальную производительность каждого из них.
• Реализовав профайлер и менеджер, глупо останавливаться на распараллеливании только pathfinding-а. Явно возникнет желание добавить туда кучу других ресурсоёмких вычислений.
И… наверное всё, на этом я остановлюсь
Дело в том, что вышесказанное пришло мне в голову в то время, пока я, полусонный, ехал на работу. А сейчас как бы пора мне думать о совсем других задачах, а вовсе не о том, как Тоади собирается всё это делать. Но, всё же, не удержусь от очередного вывода: