Потоковая программа для вычисления чисел Фибоначчи - PullRequest
3 голосов
/ 28 февраля 2011

Я пытаюсь написать программу на C ++ для вычисления ряда Фибоначчи. Я создаю поток, который делает расчет и вывод. Но в моем цикле for ничего не выполняется. Может кто-нибудь взглянуть на мой код и сказать, что я могу делать не так?

#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std; 

//iterative with output
DWORD WINAPI fib3(LPVOID param){
double u = 0; 
double v = 1;
double t; 
int upper = *(int*)param;

for(int i = 2; i <= upper; i++){
    cout << v << " "; 
    t = u + v; 
    u = v; 
    v = t; 
    cout << "testing" << endl; 
}
    cout << v << " "; 
    return 0; 
}

int main(int argc, char *argv[]){

cout << "This will compute the fibonacci series.\n" << endl; 
bool done = true; 
double x; 
DWORD ThreadId; 
HANDLE ThreadHandle; 

while(done){

    cout << "Enter a number: "; 
    cin >> x;

    if(x == -1){
        cout << "\nExiting" << endl; 
        return 0; 
    }

    ThreadHandle = CreateThread(NULL, 0, fib3, &x, 0, &ThreadId); 

    if(ThreadHandle != NULL){
        WaitForSingleObject(ThreadHandle, INFINITE); 

        CloseHandle(ThreadHandle); 
    }

}

return 0; 
}

1 Ответ

6 голосов
/ 28 февраля 2011

Вы передаете адрес двойного в CreateThread, а затем пытаетесь обработать его как int * в функции потока. Измените double x; на int x;

...