funktion threaden...

Dieses Thema im Forum "C/C++" wurde erstellt von slash-ex, 16.03.2007.

  1. #1 slash-ex, 16.03.2007
    Zuletzt bearbeitet: 16.03.2007
    slash-ex

    slash-ex Doppel-As

    Dabei seit:
    04.10.2006
    Beiträge:
    130
    Zustimmungen:
    0
    ich habe mal aus langeweile eine funktion gemacht, die alle möglichkeiten einer zahlenkombination durchprobiert bis eine vorgabe erfüllt wird:

    PHP:
    void get_nmb(int lnint limescharstr)
    {
        
    char cstring[ln];
        
    char cmp_str[ln];

        
    int *array = new int[ln+1];

        for(
    int i 0ln+1i++)
        {
            
    cmp_str[i] = str[i];
        }

        for(
    int i 0ln+1i++) 
        {
            array[
    i] = 0;
        }

        while(array[
    ln] == 0)
        {
            for(
    int j ln-1>= 0; --j
            {
                
    //cout<<array[j]<<" ";

                
    cstring[ln-1-j] = ret_char(array[j]);
                
    cout<<"vergleiche: "<<cstring<<" mit string: "<<cmp_str<<endl;
            }

            if(
    strcmp(cstringcmp_str) == 0)
                break;

            
    int i 0;
            for(; array[
    i] == limes; ++i
            {
                array[
    i] = 0;
            }
            ++array[
    i];
        }
    }
    falls es jemanden interessiert hier der code^^

    so nun meine frage: da das ganze sehr langsam verläuft... bei einem passwort von 8 zeichen länge wahrscheinlich stunden... wollte ich mal schauen, ob man die funktion nicht beschleunigen kann, und da ich grade auf meine prozessorauslastung gesehen habe und bemerkte dass nur ein kern auf 100% läuft wollte ich mal fragen wie man in c++ sowas auf 2 kerne aufteilen kann! rein rechnerisch sollte das ganze nur noch halb so lange dauern wenn ein kern genau die hälfte der zahlen berechnet!

    kann man überhaupt einen funktionsteil einem kern im multiprozessorsystem zuweisen? ich denke wenn ich ein neuronales netz schreibe, dürfte das auf diese art auch enorm beschleunigt werden!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Wenn du einen Prozess in dem Programm in Stücke aufteilen kannst, dann kannst du diese Stücke auch in Threads ausführen.

    Ohne Parameterübergabe würde das so aussehen:
    Code:
    boost::thread thread1(&prozessstueck);
    
    ...und mit Patametern :
    Code:
    boost::thread thread1(boost::bind(&prozessstueck,parameter,nocheinparameter,...));
    
    MfG
    Psyjo
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Du kannst auch mittels fork aus der PID zwei PIDs machen, und dann sollte Dein Betriebssystem die Teilprozesse auf die beiden Kerne verteilen.
    Code:
    
    int pid = fork();
    
    if(pid) { /* alle Ungerade Zahlen */ }
    else    { /* alle gerade Zahlen */ }
    
    wait(NULL);
    
     
  5. #4 slash-ex, 18.03.2007
    slash-ex

    slash-ex Doppel-As

    Dabei seit:
    04.10.2006
    Beiträge:
    130
    Zustimmungen:
    0
    das werde ich mal probieren
     
  6. #5 slash-ex, 20.03.2007
    Zuletzt bearbeitet: 20.03.2007
    slash-ex

    slash-ex Doppel-As

    Dabei seit:
    04.10.2006
    Beiträge:
    130
    Zustimmungen:
    0
    kurioserweise akzeptiert eine übergebene funktion keine argumente:
    PHP:
    boost::thread thread(&get_nmb(lnlimes"kirsche") );
    thread.join();
    weiß jemand in diese rictung rat?

    außerdem scheint sowas auch nicht beide kerne zu 100% zu belasten?!
    PHP:

    void test1
    ()
    {
        for(
    int i 0<= 5000000i+=2)
        {
            
    cout<<"i "<<i<<endl;
        }
    }

    void test2()
    {
        for(
    int i 0<= 5000000i=i+3)
        {
            
    cout<<"j "<<i<<endl;
        }
    }

    int main(int argcchar *argv[])
    {
    boost::thread thread1(&test1);
    boost::thread thread2(&test2);

    boost::thread_group tgr
    tgr.add_thread(&thread1);
    tgr.add_thread(&thread2);
    tgr.join_all();
    }
     
Thema:

funktion threaden...

Die Seite wird geladen...

funktion threaden... - Ähnliche Themen

  1. CentOS 7.2: Mailversand funktioniert obwohl nicht definiert

    CentOS 7.2: Mailversand funktioniert obwohl nicht definiert: Hallo Habe CentOS 7.2 installiert/konfiguriert. Testweise habe ich eine mail versendet: mail -s "test mail" email@adresse.de May 25 15:45:04...
  2. In eigener Sache: Neue, stark verbesserte Suchfunktion

    In eigener Sache: Neue, stark verbesserte Suchfunktion: Pro-Linux läuft nun mit der erneuerten Version 1.5 des Content Management Systems NB3. Die wichtigste sichtbare Änderung ist die neue, auf der...
  3. Funktionssuche in C: Emacs oder Vim?

    Funktionssuche in C: Emacs oder Vim?: Hallo, ich muss mir häufig C-Projekte angucken, und dann suche ich bspw., wo eine aufgerufene Funkion definiert oder deklariert (Header) wird....
  4. FAI 5 mit Autodiscover-Funktion

    FAI 5 mit Autodiscover-Funktion: Die Entwickler des Softwarewerkzeugs zur vollautomatischen Installation von Betriebssystemen und Anwendungen haben mit FAI 5 eine neue Version des...
  5. Suse Linux Enterprise 11 SP4 verbessert Sicherheitsfunktionen

    Suse Linux Enterprise 11 SP4 verbessert Sicherheitsfunktionen: Suse hat das mittlerweile vierte Service Pack für Suse Linux Enterprise 11 veröffentlicht. Die neue Ausgabe liefert erweiterte...