У меня есть программа, которая отлично работает на MacOS и Linux и кросс-компилируется в Windows с помощью mingw.Недавно я сделал программу многопоточной.
В текущем проекте программы память выделена в главном потоке и освобождена в подчиненных «рабочих» потоках.Это не проблема для MacOS и Linux, потому что система malloc / free является многопоточной.
Однако я беспокоюсь о кросс-компиляции.Версия mingw, которую я использую, построена из портов MacOS.Это довольно древняя версия G ++ (версия 3.4.5) 2004 года. Я безуспешно пытался создать более свежую версию (я хотел бы создать 64-разрядную версию, но отказался).Я получаю pthreads от http://sourceware.org/pthreads-win32.
Меня беспокоит то, что система malloc & free в 3.4.5 не является многопоточной.
Вопросы:
Должен ли я переписать свою программу так, чтобы освободившиеся блоки памяти были переданы обратно в главный поток, который должен быть там освобожден?
Стоит ли пытаться обновитьк более поздней версии Mingw?
Есть ли способ найти эти проблемы параллелизма, кроме огромного количества тестирования?Мне это просто не нравится.
Спасибо!