2014-11-14 8 views
-3

Я работаю над решателем Sudoku на C++, и мы хотим, чтобы многопоточность проверяла сразу несколько головоломок. Я пробовал использовать библиотеку потоков C++, но он не правильно дал правильный вывод, я надеялся на некоторую помощь в настройке потоковой передачи для моей программы. sodukusolver - наша функция, которая решит содоку. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.Threading visual studio 2013

#include <thread> 

thread t1(sodokusolver); 
thread t2(sodokusolver); 
thread t3(sodokusolver); 


int main(){ 

t1.detatch(); 
t2.detatch(); 
t3.detatch(); 

return 0;} 
+1

Возможно, прочитайте некоторые основные уроки? Threading может звучать сложно, но основы на самом деле не так уж плохи. – marsh

+0

, возможно, попробуйте присоединиться, вместо того, чтобы отсоединяться (также, вероятно, вам лучше сделать потоки локальными для основного, поскольку это уточняет порядок инициализации). Кроме того, вы должны определить ', но он не правильно дал правильный вывод', чтобы сделать его более подходящим вопросом. – PeterT

+0

. Я хочу, чтобы вопросы с запросом кода должны демонстрировать минимальное понимание ... back – deW1

ответ

-2

Убедитесь, что ваш компилятор поддерживает C++ 11.

#include <thread> 
std::thread *t; 
void sodokusolver() { 
    bool stop = false; 
    while(!stop) { 
     //... 
    } 
} 
int main(){ 
    t = new std::thread[3]; 
    for(char i = 0;i<3;i++) { 
     t[i] = std::thread(sodokusolver); 
    } 
    for(char i = 0;i<3;i++) { 
     t[i].join(); 
    } 
    delete [] t; 
    return 0; 
} 
+0

Пожалуйста, убедитесь, что ваш ответ не имеет ошибок компилятора перед публикацией. –

+0

Отредактировано: Не забывайте о динамических вещах памяти, извините. Я тестировал его, но немой, когда редактирую, перед публикацией и удалением динамической памяти на главной функции. –

+0

Этот код имеет утечку памяти, вам нужно 'delete' соответствовать вашим 'new'. Или просто поместите свой массив в стек, здесь нет необходимости в динамическом распределении. –