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