Multithreading Fragen



  • ja prozessorkerne, also ich fand sie verständlich



  • Windows 7 hatte eben bei mir 872 Threads. Wieso sollteste nicht n paar dazuerstellen dürfen? - Auch bei wenigen Prozessoren dürfte Windows mindestens einen Bruchteil davon haben, wenn nicht genausoviele.


  • Mod

    alterbro schrieb:

    Multithreading braucht nicht unbedingt mehrere Prozessorkerne?

    Nein. Multithreading braucht in erster Linie (aber nicht zwingend!) ein multithreadingfähiges Betriebssystem. Also so moderner Kram wie Windows 95.

    Wenn ich einen synchronen server mit 16 slots machen will brauch 17 threads, aber nur einen kern, 16 pro client und einen für den server selbst?

    cooky451 schrieb:

    Die Frage klingt irgendwie seltsam.

    alterbro schrieb:

    also ich fand sie verständlich

    Sicher? Lies sie noch einmal durch.



  • Okay wurde die Frage richtig interpretiert und ausgeführt?



  • alterbro schrieb:

    Ich hab da n paar frgen zum mt:

    Multithreading braucht nicht unbedingt mehrere Prozessorkerne?

    Wurde ja schon korrekt beantwortet (=nein, braucht man nicht).

    Wenn ich einen synchronen server mit 16 slots machen will brauch 17 threads, aber nur einen kern, 16 pro client und einen für den server selbst?

    Was verstehst du unter "synchronem server"?
    Einen "ein Thread pro Connection" Server?
    Und was mit "slot"?
    Meinst du dass er 16 gleichzeitige Connections "können" soll?

    Dann natürlich ja.
    Wobei du die Threads ja auch dynamisch erstellen kannst, bzw. einen Pool verwenden dessen Grösse du bei Bedarf dynamisch anpasst.



  • SeppJ schrieb:

    multithreadingfähiges Betriebssystem. Also so moderner Kram wie Windows 95.

    schmeckt ein wenig nach sarkasmus, aber danke, ist gut zu wissen,dass man etwas weiss. Ich dachte zwar multithreading häts schon irgendwie ms dos 5 gegeben, aber das weisst sicher besser(Hinweis, das war nicht ironisch)

    und zer, ich glaub das wärs fürs erste, sorry für die späte rückmeldung, aber ich musst starwars sehen.

    und hustbär
    es gibt asynchrones networking ,asio, und synchrones.
    und ich denke, dass mit dem multithreading server is normal.
    slot ist echt ein dummes wort, nenns ab jetzt connection
    ja 16 gleichzeitig, wie die meisten server.

    tja, dann werd ich noch ein wenig mein hirn mit Multithreading aufrüsten.

    danke euch allen, schönes Wochenende


  • Mod

    alterbro schrieb:

    Ich dachte zwar multithreading häts schon irgendwie ms dos 5 gegeben

    Auf den damaligen Mehrkernsystemen? 🙂 Was war denn dann deine erste Frage?

    Du meinst vermutlich Multitasking, welches MS-DOS 5 recht rudimentär unterstützte.

    aber das weisst sicher besser(Hinweis, das war nicht ironisch)

    Man kann Threads auch auf Userebene implementieren. Ein DOS-Programm mit Threads muss dann selber einen Scheduler implementieren. Dafür gab's natürlich auch Bibliotheken, aber das musste dann eben alles mit dem Programm mitgeliefert werden.



  • ach so eine art virtuelles multasking. dann wars wohl das, es hat mich eben irritiert.

    Danke



  • alterbro schrieb:

    und hustbär
    es gibt asynchrones networking ,asio, und synchrones.

    und alterbro
    es gibt mehr als nur ein "synchrones", was meinste warum ich nachfrage.
    nämlich blocking und non-blocking.
    nen?

    unb bei non-blocking reicht ein thread.
    dass is auch normal. und die meisten server können mehr als 16.



  • aso jetzt bin ich verwirrt:

    ich dachte synchrones networking sei blocking =>mehrere Threads und
    asynchrones ist non blocking(handler) => ein thread oder was meinst du?



  • 🙄 Immer dasseble...



  • wie jetzt hab ich jetzt recht oder nicht?



  • alterbro schrieb:

    wie jetzt hab ich jetzt recht oder nicht?

    Das letztere... 😞



  • ach nö, und ich dacht ich häts jetzt gejeggt, und wieder geh ich googeln, trozdem danke



  • Synchrones Netzwerken kann man blockend machen oder nicht - denke ich.
    Also z.B. kann man immer mal wieder schaun ob was da ist, also z.B. als schleife die auch noch was andres macht, oder man kann ne blocking Funktion aufrufen.

    Asynchron gibts nur nichtblockierend.

    Beispiel 16 Clients:

    Synchron-blockierend -> 16 Threads
    Synchron-nichtblockierend -> 1 Thread

    Asynchron -> 1 Thread



  • Asynchron gibts auch blockierend.



  • Asynchron bedeutet doch man hinterlegt eine Funktion und diese wird irgendwann mal aufgerufen.

    Was ist daran blockierend..

    Meinst du die Umsetzung von Ansynchronen Funktionen?
    z.B. es wird dann n eigener Thread erstellt und in diesem Thread wird Synchron-blockierend auf ne Antwort gewartet.
    Klar könnte man dies blockierend nennen. Jedoch aus Sicht des Benutzers der Asynchronen Funktionen ist es nicht-blockierend. :p



  • Ich glaube was er meint war, dass du bei asynchronen Operationen shedulergesteuert auf das Ende warten kannst, ohne CPU Zeit für das Pollen zu verschwenden.



  • wenn das so ist, welche vorteile hat dann asynchrones networking gegenüber non blocking synchrionem?
    und gibts auch vorteile von blocking zu non blocking, oder is das nur ein relikt?



  • Nun, 1. musst du dich nicht darum kümmern, sondern das macht das System für dich. 2. Ist eben die Tatsache, dass das System alles für dich übernimmt eine große Optimierungschance, weil es selbst entscheiden kann, wann es was kopiert/sendet oder wann es einen Thread erstellt.

    Aber das Thema gab es hier eigentlich schon zu genüge, es gibt sogar einen Artikel für Windows: http://www.c-plusplus.net/forum/285388


Anmelden zum Antworten