threaden mit boost



  • ich habe vor wegen einer rechenintensiven funktion einmal das threaden bzw. aufteilen auf meine 2 prozessorkerne auzuprobieren.
    leider habe ich ein problem, das dieses beispiel zeigen soll:

    void test()
    {
    	for(int i = 0; i <= 100000; i++)
    	{
    		cout<<i<<endl;
    	}
    }
    
    int main(int argc, char *argv[])
    {
    	boost::thread thread1(&test );
    
    	return EXIT_SUCCESS;
    }
    
    testchecker.cpp:(.text+0x10c): undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)'
    testchecker.cpp:(.text+0x13f): undefined reference to `boost::thread::~thread()'
    

    irgendwie habe ich nicht die geringste anhnung, warum dieses einfache beispiel nicht funktionieren will?!



  • weil der linker die thread lib nicht einbindet.



  • boost::fred schrieb:

    weil der linker die thread lib nicht einbindet.

    Schimpf doch nicht so auf den Linker, der kann das doch gar nicht wissen, wenn man es ihm nicht sagt.



  • hmm, weiß jemand wie man die libs unter kdevelop einbinden kann?



  • debora schrieb:

    void test()
    {
    	for(int i = 0; i <= 100000; i++)
    	{
    		cout<<i<<endl;
    	}
    }
    
    int main(int argc, char *argv[])
    {
    	boost::thread thread1(&test );
    
    	return EXIT_SUCCESS;
    }
    

    vor dem Programmende sollte man noch ein join spendieren, sonst wird der Prozess beendet, bevor der Thread beendet ist. Also:

    int main(int argc, char *argv[])
    {
    	boost::thread thread1(&test );
    
        thread1.join();
    	return 0;
    }
    

    Gruß
    Werner



  • ... ok ich habs jetzt^^


Anmelden zum Antworten