LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

если тебе всё ещё интересно что там к чему, то вот фотка валгринда.

как и указал анонимус, всё дело в том что основную работу выполняет ф-ция IsSimple.

у тебя получается примрено такая последовательность вызовов

1. выполнить IsSimple для числа 2. в зависимости от результатат IsSimple запустить поток

т.е. получается что ты _для каждого_ порождённого потока запускаешь IsSimple хотя бы один раз. И количество работы не в функции IsSimple несравненно больше чем во всех остальных функциях твоей программы. Получается что всю основную работу ты делаешь в главном потоке программы. А порождённым потокам работы вообще не даешь (т.е. ты даешь, но они завершают её моментально в сравнении с временем выполнеиня IsSimple).

вот и весь фокус. я ж тебе говорил что ошибка детская. и когда анонимус на неё указал, уже не было смысла в общем-то даже валгринд расчехлять. Но так сказать для чистоты эксперимента, пусть уже будет...

Исходная версия AndreyKl, :

если тебе всё ещё интересно что там к чему, то вот фотка валгринда.

как и указал анонимус, всё дело в том что основную работу выполняет ф-ция IsSimple.

у тебя получается примрено такая последовательность вызовов

1. выполнить IsSimple для числа 2. в зависимости от результатат IsSimple запустить поток

т.е. получается что ты _для каждого_ порождённого потока запускаешь IsSimple хотя бы один раз. И количество работы не в функции IsSimple несравненно больше чем во всех остальных функциях твоей программы. Получается что всю основную работу ты делаешь в главном потоке программы. А порождённым потокам работы вообще не даешь (т.е. ты даешь, но они завершают её моментально в сравнении с временем выполнеиня IsSimple).

вот и весь фокус. я ж тебе говорил что ошибка детская. и когда анонимус на неё указал, уже не было смысла в общем-то даже валгринд расчехлять. Но так сказать для чистоты эксперимента, пусть уже будет...