kostenloser Webspace werbefrei: lima-city


readLine() beim blockieren schlafend?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    sweetflake

    sweetflake hat kostenlosen Webspace.

    Hi,
    ich wuerde gerne wissen, ob readLine() waehrend des Wartevorgangs schlaeft oder durch aktives Warten Ressourcen verbraucht.

    Vielen Dank
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Welcher Wartevorgang?

    Ich w?rde mal sagen solange der Stream nicht geschlossen ist, sind alle assozierten Resourcen im gebrauch und somit wird solange du den Stream nicht schlie?t auch Resourcen verbraucht.
  4. Autor dieses Themas

    sweetflake

    sweetflake hat kostenlosen Webspace.

    Nat?rlich verbraucht die Funktion auch Ressourcen, wenn sie schl?ft. Es ging mir da eher um Prozessorauslastung. Da gibt es ja einen enormen Unterschied zwischen aktivem Warten, wo die Funktion immer wieder den Socket abfragt und blockierendem Warten, wo das Programm schl?ft und die CPU nicht verbraucht.

  5. e********l

    Um mal die Problemativ festzustellen... was genau willst oder machst du?

    Beim ersten Post dachte ich an eine Filetransaktion, nun schreibst du was von Sockets. Was genau ist die Situation? Generell sollte man die Socket Verbindung immer schlie?en nachdem alles transferiert ist.
  6. Autor dieses Themas

    sweetflake

    sweetflake hat kostenlosen Webspace.

    Ich habe eine Socketverbindung. Auf dieser fuehre ich readLine() aus. Da ich damit warte, bis am Socket etwas ankommt, kann es passieren, dass ich mit readLine() durchaus eine Weile warten muss. Fuer mich ist es also wichtig zu wissen, ob ich in der Zeit, wo ich am Socket warte, Prozessorleistung verbrauche.

    Wenn die Funktion aber den Prozess schlafen legt und auf ein Signal wartet, ordnet der Scheduler meinem Prozess ja keinen Zeitslot zu und ich blockiere den Prozessor nicht.
  7. e********l

    ?hm, dann ist etwas in deinem Design sehr schlecht gel?st. Dein Socket sollte ja nur etwas lesen, wenn er dazu aufgefordert wird. Ansonsten kann er horchen ob vom Server was kommt und ist dann halt im Idle.

    Alles andere w?re Verschwendung.
  8. 0******a

    evil-devil schrieb:
    ?hm, dann ist etwas in deinem Design sehr schlecht gel?st. Dein Socket sollte ja nur etwas lesen, wenn er dazu aufgefordert wird. Ansonsten kann er horchen ob vom Server was kommt und ist dann halt im Idle.

    Alles andere w?re Verschwendung.

    Ganz im Gegenteil. Blockierende Sockets verbrauchen weniger Ressourcen als nicht blockierende, da bei nicht blockierenden ?ber Poll-Verfahren der Status der Verbindung immer wieder abgefragt werden muss.

    Zur urspr?nglichen Frage:
    Soweit ich weiss, bauen die Socketfunktion in Java auch auf BSD-Sockets auf, was f?r deine Fragestellung bedeutet, dass du im blockierenden Modus am wenigsten (n?mlich fast gar keine) Ressourcen verbrauchst.
  9. e********l

    Naja, bei einem Chat programm w?re es fatal nicht zu pollen, da man dann ganz schnell Datenverpassen w?rde.
  10. 0******a

    Du verpasst Daten weder im blockierenden Modus noch im nicht blockierenden. Hat damit nichts zu tun (ausser du machst beim Pollen Fehler).
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!