В смысле читают все потоки одни и те же данные из одного и того же места, пишут в разные (но соответственно тоже одно и то же значение)
да, но запись я вообще убирал - это ни на что не влияет абсолютно
какого порядка
?
маленькое, не больше 10, в этом примере L=4
Опять вернул динамические массивы: 2 потока отработали нормально, за 95 сек, но третий за 140 сек, а четвёртый вообще за 160. Никаких других изменений больше не было, только тип массива.
Думал - может с адресацией проблема, проверил
Код:
sizeoff(double*)=8;
и в потоках и в основной программе. Так, что с этим всё в порядке.
-- 16.01.2020, 17:06 --Попробуйте вместо двумерных массивов использовать одномерные - эффект сохраняется?
что Вы имеете в виду?
Сейчас у меня действительно, в одном месте, выделяется массив указателей, а потом, под каждый из них выделяется массив double. Если это понимается под двухмерным массивом (как создать двухмерный динамический массив по другому - я не знаю), то пробовал и так:
выделяю один большой кусок памяти, а потом определяю положения всех указателей. Так получается почти то же самое, но все данные следуют друг за другом.
Запустил первый раз - всё отлично. Запустил второй - в одном потоке время выполнения 120 сек, т.е. на 30 сек больше чем нужно. Запустил третий раз - уже в 2-х потоках аномально большое время выполнение. И пошло - поехало.
В общем от этого толку нету. С динамическими массивами, хоть двухмерными, хоть одномерными, почему то, в некоторых потоках наблюдается аномально большое время выполнения. Причём от случая к случаю, никакой системы нет.