Kleine Fragen zu Network + Threads | <weitere Frage>
Übersicht

MynBetreff: Kleine Fragen zu Network + Threads | <weitere Frage> |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
als wie der Titel bereits aussagt habe ich mehrere Fragen. 1) Network Ist es möglich mehrere TCP(Sockets) Verbindungen über den gleichen Port laufen zu lassen? Wenn ja (wovon ich ausgehe) wie genau löst man das? Geht das ohne Erweiterung überhaupt? (LIB) Mit den normalen Grund Network Funktion von BMAX gehts ja irgendwie nicht^^ 2) Network Bisher habe ich es nicht geschafft über einen UDP Socket einen String zu empfangen, senden funktioniert. Nochmal, geht das ohne Erweiterung überhaupt? (LIB) 3) Thread Wie kann ich einen Thread löschen/zerstören sodass der Speicher auch freigegeben wird, bzw. ich den Thread wieder in laufe der Run Time vom Programm wieder neu erstellen kann ohne dass das Programm mehr Speicher wie vorher benutzt. Ich hoffe ihr könnt mir weiterhelfen ![]() mfg Myn |
||
- Zuletzt bearbeitet von Myn am Di, Aug 07, 2012 17:41, insgesamt einmal bearbeitet
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
1) Was denn, mehrere Sockets (das geht nicht) oder mehrere Verbindungen (das geht)?
Für letzteres erhältst Du mit jedem Accept eine Verbindung, die Du dir irgendwo merken solltest. 2) Natürlich geht das, allerdings anders als bei TCP. Codebeispiele dazu gibt es massenhaft ![]() 3) Wenn der Thread beendet wird, sollte der Garbage Collector den Rest tun. |
||
Starfare: Worklog, Website (download) |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1) Da hat vor ein paar Woche nicht so einfach geklappt, ich versuchs dann nochmal würd ich sagen.
Und ja, ich meinte Verbindungen. 2) Muss ich wohl nochmal suchen ![]() 3) Ich meinte das ein bisschen anders. Angenommen ein thread soll irgendwas Berechnen, allerdings nur ab und zu. Dann möchte ich den Thread starten / aufrufen, dann berechnet er was und sollte dann halt beendet werden oder halt zwischen geparkt.. bis er wieder mal was berechnen soll. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist der absolute Normalfall für Threads, wenn sie out of Scope kommen werden sie beendet und der Spreicher dann vom GC freigegeben.
Die verweilen nicht nach Ende ihrer Tätigkeit. Es kann bestenfalls sein dass der GC sie noch nicht abräumt weil es sich noch nicht lohnt aufzuräumen. (Wenn du DetachThread benutzt geschieht das schliessen des Threads automatisch, ansonsten gibt dir ThreadRunning Auskunft ob Du ihn schliessen (nullen) kannst. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Socket ist eine bidirektionale Verbindung mit eigener IP und gebunden an einen
Port. Wird dieser Port einmal verwendet, kann er nicht noch einmal an ein anderes Socket (außer anderer Protokolltyp UDP/TCP) gebunden werden. Grüße |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, wenn ich so überlege ist und war mir das auch klar...
Ich werde in den nächsten Tagen mal weiter rumprobieren und mich gegebenfalls nochmal hier melden. Danke für die Hilfe ![]() |
||
MynBetreff: Weiterführung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, es mag vielleicht doof sein, aber ich komme da nicht weiter.
Dieser Beispiel Code verbraucht mit der Zeit ziemlich schnell mehr Arbeitsspeicher. Hier wurde ja gesagt das ein Thread nach Aufgaben-Ende beendet, bzw. Speicher wieder freigegeben wird. Code: [AUSKLAPPEN] SuperStrict Local Timer:TTimer=CreateTimer(5) Repeat For Local i:Int=0 To 5 Step 1 Local newThread:TThread=CreateThread( objectThread, "") Next WaitTimer(Timer) Forever Function objectThread:Object( data:Object ) EndFunction Also ganz einfach, was läuft hier falsch ![]() //edit: Wie kann ich das regeln, das der Speicher freigegeben wird? |
||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir steigt der Arbeitsspeicher nicht stetig. Er steigt und sinkt wieder, da der GC erst nach einer Weile den Arbeitsspeicher wieder frei gibt.
Da jedoch bestimmte Betriebssysteme eine maximale Anzahl an Threads haben (Windows, afair), ist die Benutzung von DetachThread eine gute Idee. EDIT: Welche BlitzMax Version verwendest du? EDIT2: Haue ich noch ein manuelles GCCollect() ans Ende der Schleife, verwende DetachThread und benutze nur die Module BRL.Blitz, BRL.Timer sowie BRL.Threads, dann bleibt die Speicherauslastung bei mir sogar grösstenteils konstant. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie kann ich denn DetachThread benutzen, anhand dieses Beispieles ?
GCCollect() hat voerst nichts verändert. //edit: Verwende BMAX 1.45 derzeit. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group