Befehle Gleichzeitig ausführen
Übersicht

![]() |
TobyBetreff: Befehle Gleichzeitig ausführen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo alle miteinander,
ich habe eine Frage, und zwar wird ja für gewöhnlich in einem Blitz Basic Programm ein Befehl nach dem anderen abgearbeitet. Nun Programmiere ich mit BlitzBasic seit ein paar Monaten besonders in Netzwerk/Internet Bereich, und da kann es nunmal schon vorkommen, dass es etwas Längerdauert, bis die gewünschten Daten durch die Leitung kommen. Nun ist meine Frage: Ist es möglich bestimmte Prozesse gleichzeitig laufen zulassen, oder gibt es da keine Möglichkeit. Ich habe mir jetzt überlegt, wenn es keine Möglichkeit gäbe, es mit einem zweiten Programm zu realisieren, dass dann die aufgaben einfach übernimmt und dann an das Hauptprogramm überträgt. Vielen Dank für eure Hilfe Toby |
||
Member of
Terra Multimedia |
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Parallelablaufen lassen, geht nicht, da BB keine Threads oder wie die heißen managen kann! Und 2 BB-Prozesse gleichzeitig laufen lassen, ist keine wirklich gute Idee, da die sich irgendwie immer selbst ausbremsen, - vielleicht gibts das Problem ja nicht, wenn die Programme compilt sind... | ||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich hab sowas schonmal gemacht, indem ich 2 Programme geschrieben hab. Bremst sich auch nicht. Nachteil: Man muss mindestens eins compilt haben, um es zu testen. Kann manchmal nachteilig bei der Fehlersuche sein... | ||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
Toby |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, dann werde ich wohl zwei Programme schreiben
Thx. |
||
Member of
Terra Multimedia |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schwachfug!
Ein Programm reicht doch. Alle PCs mit einem Prozessorkern können Befehle nur nach einander abarbeiten. Nun meint ihr aber, mit 2 Programmen geht es parallel. Das stimmt so nicht ganz, aber warum scheint es so? Richtig, weil Windows immer mal das und dann wieder das Programm arbeiten lässt. Warum sollte man das also Programmintern nicht genauso machen? Als Beispiel beim runterladen. Da gibt es die Möglichkeit - die Toby sicher machte - solange Readbyte zu machen, bis alles durch ist (EOF). Man kann das ganze doch aber auch in eine Funktion reinhauen. In dieser Funktion wird geguckt, ob was zum auslesen da ist (ql:Readavail). Wenn ja, liest man zB maximal 50 Bytes aus und geht aus der Funktion wieder raus. Eine EOF Prüfung darf auch nicht fehlen. Nun ruft man diese Funktion immer aus einer Schleife heraus auf, man kann aber noch andere Sach in die Schleife packen. Zum Beispiel eine Funktion aufrufen, die einen Fortschrittsbalken malt oder so. Zusammenfassung: Aufgaben aufsplitten und nicht das ganze Programm warten lassen, bis die Aufgabe erledigt ist. Das ist übrigens auch der Unterschied zwischen PlayMusic und LoadSound. LoadSound lädt alles in den Hauptspeicher. Das ganze Programm wartet, bis es damit fertig ist. Playmusic liest während des Abspielens von der Festplatte (es streamt quasi) und niemand muss warten. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Zusammenfassung:
Aufgaben aufsplitten und nicht das ganze Programm warten lassen, bis die Aufgabe erledigt ist. Das ist soweit richtig, hab ich auch mal gemacht. Beispiel wo das nicht klappt: Auf einem TCP/IP Server zu connecten. Lass mal dein Programm auf einen Server connecten, der nicht vorhanden ist und lass den User keinen Delay spüren. Geht nicht. Und das ist nur ein Beispiel. Gibt noch so ein paar Netzwerkfunktionen, die manchmal für so einen Delay sorgen. |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ql:TCPTimeouts
Außerdem verbindet man ja nicht dauernd zu einem Server, so dass die paar Sekunden erträglich sind. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich sehe eh net ganz wo im beschriebenen Fall der nutzen von 2 Exe sein soll, denn die 2te Exe wartet so oder so auf die Daten und sei es nur ein "Server nicht erreichbar". Sie ist zwar faktisch gesehen noch nutzbar nur aufgrund des Tatsache das die Daten gebraucht werden verbessert sich das ganze kein Bisschen.
Hinzu kommt, das man zwischen 2 Exe keine Dateien "teilen" kann, sie also nochmal versandt werden müssen via 2ter Verbindung oder so ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
D2006 hat Folgendes geschrieben: <a href="http://www.blitzbase.de/befehle2d/tcptimeouts.htm" class="postlink" target="_blank">TCPTimeouts<img src="/images/quicklink.gif" width="13" height="11" alt="" title="Begriff nachschlagen" border="0"></a>
Außerdem verbindet man ja nicht dauernd zu einem Server, so dass die paar Sekunden erträglich sind. Was ist wenn ich zu Servern connecten will, die länger zum antworten brauchen? Was ist wenn ich ein Programm schreiben will, wo der Sinn besteht, oft zu Servern zu connecten? Klar könnte man sagen, BB wäre nicht die Sprache dafür, womit man vielleicht etwas recht hätte. Aber es ist in BB möglich, und damit es userfriendly wird, ist es sinnvoll, das ganze in 2 Exe Dateien aufzusplitten. Zitat: Ich sehe eh net ganz wo im beschriebenen Fall der nutzen von 2 Exe sein soll, denn die 2te Exe wartet so oder so auf die Daten und sei es nur ein "Server nicht erreichbar".
Das Programm, das auf die Daten wartet, reagiert dafür auf Usereingaben. So kann er (mal als Beispiel) wenn man auf einen Server connecten will, jederzeit abbrechen und weitermachen, ohne Verzögerung. In dem Programm, wo ich das ganze genutzt habe, wurden laufend Daten heruntergeladen. Der Server, von dem ich das machte, war sehr langsam und so hätte man schlecht gleichzeitig spielen und die Daten runterladen können. So hab ich für das runterladen ein Extra Programm geschrieben. Es lief ohne Probleme. Zitat: Jo. Und wer die Server-Informationen (z.B. Ping für eine Server-Liste) mittels TCP anstatt UDP ausliest, der ist sowieso Doof. Zumindest in falle von Blitz3D.
Oft lässt sich TCP/IP nicht vermeiden, denn BB ist nicht nur für Spiele zu gebrauchen. Natürlich ist die Methode mit 2 Exe Dateien nicht in jedem Fall sinnvoll, es gibt aber Fälle, in denen man damit gut fährt. Und wer sich gegen solche Ansätze verschließt, hat wohl Scheuklappen auf... |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frisch und fröhlich rumconnecten geht auch mit TCP net, da Windows nicht so übermässig viele parallele Verbindungen zulässt. Weswegen glaubst du nutzt P2P Software prinzipiell UDP? | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
das stimmt so nicht ganz.
Das ist meist eine Mischung aus TCP und UDP (also es wird beides benutzt) weswegen man immer mindestens 2 Ports freigeben muss ^^ |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group