Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13
  1. #1
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard methode an thread übergeben?

    hi... ich sitz grad an nem programm und hab versucht nen thread zu initialisieren... zu beginn hab ich mit funktionen gearbeitet, da hat alles super geklappt, jetzt aber mach ich das ganze OO und wollte ne methode übergeben und dann bekomm ich nen error... kann mir jemand sagen ob ich mich für die paar thread relevante funktionen von OOP verabschieden muss oder kann ich irgendwie methoden verwenden?

    ne 2. frage die nichts mit dem thema direkt zu tun hat aber auch mit threads würde ich auchh noch hier stellen, sollte das thema größer werden mach ich ein 2. topic:

    ich hab mir letztens die frage gestellt wie man rießige socket programme wie icq organisiert und da dachte ich mir dass es am besten wäre für jede connection ein thread anzulegen weil 1 socket wohl sehr schnell überlastet wäre... jetzt frag ich mich, wie legt man threads dynamisch an?

    zur info: ich arbeite mit boost::thread und VS2010
    In§@N¡T¥

  2. #2
    Capt'n Crunch
    Registriert seit
    10.07.2008
    Beiträge
    999

    Standard

    zu 2. Bissl pseudocode
    While true
    s =accept(ss,...)
    thread(s)
    end while
    bitcoin. Banking Is Necessary. Banks Are Not. - by Lincoln6Echo

    Das ganze Mysql usw is mir zu viel arbeit um es zu lernen

  3. #3
    NoClose Wurm
    Registriert seit
    21.03.2008
    Beiträge
    196

    Standard

    1.) guck mal boost bind Boost: bind.hpp documentation

    Bei statischen Methoden hast du keine Probleme das zu übergeben, weil die Methoden auch ohne Objekt ansprechbar sind, einfach den Pointer holen. Bei dynamischen Methoden musst du mit boost bind arbeiten. Eine dynamische Methode exisitiert bekanntlich nie ohne das Objekt.

    2.) Parameterübergabe ist dein Problem? boost bind...

  4. #4
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    hier die lösung zu problem 1:

    boost::thread t(&classenname::methode, &objekt);

    und so übergibt man funktionen falls es jemand interessiert:

    boost::thread t(boost::bind( &classname::methode, &objekt, parameter ));

    wer auf problem 2 näher eingehen will darf das =P

    edit:

    was mich bei 2) beschäftigt ist... wird das überhaupt so gehandhabt? und wenn ja, wie würde das aussehen da es dann ja für jede connection 1 socket geben muss d.h. man müsste immer soviel threads wie connections haben. mir ist gerade unklar wie man das machen könnte, weil ein array hätte auch ne fixe anzahl oder gibt es möglichkeiten arrays "mitwachsen" zu lassen so dass bei jeder neuen verbindung ein thread-element dazu kommt?
    Geändert von Gaara (27.11.2010 um 11:27 Uhr)
    In§@N¡T¥

  5. #5
    NoClose Wurm
    Registriert seit
    21.03.2008
    Beiträge
    196

    Standard

    Ich weiss immer noch nicht genau was du bei 2 meinst. Schau doch mal mit einem besseren Taskmanager nach wieviele Threads dein ICQ Programm hat...

    Natürlich kann man Arrays dynamisch wachsen lassen, in C++ hast du da mindestens 5 Möglichkeiten das zu tun... STL Containers - C++ Reference

  6. #6
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    ok vielleicht versteh ich ja etwas falsch weswegen du das ganze nicht verstehst aber ich spreche eig vom icq server und nicht von client weswegen der tskmgr keinen sinn haben wird. ich zitiere eifach mal Jürgen Wolf:

    Mehrere Clients gleichzeitig behandeln

    [...] Die Verwendung von (Multi)Threads. Dabei wird für jeden client ein neuer Thread gestartet. [...]
    Seite 976 in dem Buch c++ von A bis Z falls es jemand hat.
    In§@N¡T¥

  7. #7
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard

    Code:
    void proxy_thread_server( pvoid Arg )
    {
        ushort Port = *((ushort*)Arg);
        SOCKADDR_IN Addr;
        SOCKET      Server,
                    Client;
        memset( &Addr, 0, sizeof(Addr) );
        Addr.sin_family      = AF_INET;
        Addr.sin_port        = htons( Port );
        Addr.sin_addr.s_addr = INADDR_ANY;
        Server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
        if( bind(Server, (struct sockaddr*)&Addr, sizeof(Addr)) == 0 )
        {
            if( listen(Server, SOMAXCONN) == 0 )
            {
                for( ;; )
                {
                    /*
                    LOOK HERE DUMBFUCK.
                    */
                    Client = accept( Server, NULL, NULL );
                    _beginthread( proxy_thread_client, 0, &Client );
                }
            }
        }
        closesocket( Server );
    }
    Als beispiel. Der wichtige part is markiert.

  8. #8
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    ok, danke wacked! werds mir gleich mal anschauen. kann denk ich closed werden.
    In§@N¡T¥

  9. #9
    DateMake Dialer Avatar von Dj Hackmaster A
    Registriert seit
    02.11.2010
    Beiträge
    115

    Standard

    fork() <3
    Zitat Zitat von Shadowgamer
    Und solch sinnlosen Kommentare kannst du dir doch bitte sparen. Denn so merkt erst recht jeder das du, nicht nur Körperlich sondern auch Geistig, noch ein kleines Kind und auf dem Nivou eines Sonderschülers bist.
    Rätsel und obligatorischer Haftungsausschluss:

    "Ich muss niemanden anerkennen, der vom Staat lebt, diesen Staat ablehnt, für die Ausbildung seiner Kinder nicht vernünftig sorgt und ständig neue kleine Kopftuchmädchen produziert."

  10. #10
    Bugbear Wurm Avatar von Gaara
    Registriert seit
    01.01.2007
    Beiträge
    230

    Standard

    wäre das besser/einfacher umzusetzen?
    In§@N¡T¥

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. email daten übergeben
    Von SUNZ im Forum PHP
    Antworten: 1
    Letzter Beitrag: 09.03.2010, 10:30
  2. Wie String übergeben?
    Von sunny-boy3 im Forum .NET Sprachen - Techniken
    Antworten: 16
    Letzter Beitrag: 16.07.2009, 11:36
  3. Längere strings übergeben?
    Von sp33dwalker im Forum VisualBasic
    Antworten: 14
    Letzter Beitrag: 10.12.2008, 21:58
  4. [AutoIt] Variablen an PHP-Seite übergeben
    Von revetr im Forum Sonstige Programmiersprachen
    Antworten: 2
    Letzter Beitrag: 07.10.2008, 15:47
  5. Passwort sicher übergeben?
    Von theone im Forum PHP
    Antworten: 2
    Letzter Beitrag: 07.10.2008, 12:15

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •