Пожалуйста, взгляните на следующий код:
ThreadX^ o1 = gcnew ThreadX(SS,x2,0,ss,x,xcores);
Thread^ t1 = gcnew Thread(gcnew ThreadStart(o1, &ThreadX::InitializeCvecArray));
t1->Name = "t1";
ThreadX^ o2 = gcnew ThreadX(SS2,x2,ss,ss,y,xcores);
Thread^ t2 = gcnew Thread(gcnew ThreadStart(o1, &ThreadX::InitializeCvecArray));
t2->Name = "t2";
t1->Start();
t2->Start();
Проблема в том, что эти потоки выполняются последовательно, сначала выполняется поток t1, а затем поток t2.Если я выйду из main (без вызова Join ()) после строки t2-> start ();Я вижу только вывод из t1, а не из t2.Эти два потока не зависят друг от друга, они читают 2 или 3 глобальные переменные и все.
Background Story
Я запускал некоторый код cilk plus (intel cilk) и заметил, что время, затрачиваемое программой cilk, было равно времени, затрачиваемому последовательной программой +над головой.Поэтому я создал это простое многопоточное приложение, и результаты не изменились.Время, затраченное многопоточным приложением, равно времени, затрачиваемому последовательной программой + создание потока / накладные расходы на ожидание.У меня есть система AMD Athlon 64 X2 (просто 2 физических ядра), использующая Visual Studio 2010, Windows 7 Home Premium 64bit.Я не знаю другого языка, кроме C / C ++.
Дополнительная информация
Увеличение приоритета потоков "t2-> Priority = ThreadPriority :: Highest;"тоже не помогло.Что я хочу сделать, это сравнить набор файлов с эталонным.Чтобы ускорить сравнение, я подумал, что было бы хорошо, если бы я сравнивал два или более параллельно, отсюда и многопоточный подход.