У меня довольно простое многопоточное приложение VCL gui, написанное на Delphi 2007. Я выполняю некоторую обработку в нескольких дочерних потоках (до 16 одновременных), которые должны обновлять элемент управления сеткой в моей основной форме (просто отправляя строки в сетка). Ни один из дочерних потоков никогда не разговаривает друг с другом.
Моя первоначальная конструкция включала вызов TThread "Synchronize" для обновления формы управления сеткой в текущем потоке. Тем не менее, я понимаю, что вызов Synchronize выполняется по существу, как если бы он был основным при вызове. При одновременном выполнении до 16 потоков (и большая часть обработки дочерних потоков занимает от 1 секунды до ~ 10 секунд) будут ли окна-сообщения лучшими?
Я начал работать в этот момент, когда дочерний поток отправляет сообщение Windows (состоящее из записи нескольких строк), а основной поток имеет прослушиватель и просто обновляет сетку при получении сообщения.
Любые мнения о наилучшем методе МПК в этой ситуации? Окно сообщений или "Синхронизировать"?
Если я использую оконные сообщения, предлагаете ли вы обернуть код, в который я отправляю сообщение в сетку в блоке TCriticalSection (введите и оставить)? Или мне не нужно беспокоиться о безопасности потоков, так как я пишу в сетку в основном потоке (хотя внутри функции обработчика окна)?