Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[Gelöst] Thread Call Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 01.01.2008, 20:41    Titel: [Gelöst] Thread Call Problem Antworten mit Zitat

Hallöle

Ich habe ein ziemlich merkwürdiges Problem udnkann mir nicht erklären warum dem so ist.

In meinem Projekt: http://www.freebasic-portal.de/index.php?s=projekt&id=11... Nutze ich Threads in der TSNE um jedem Client einen eigenen Thread zu zuweisen. Das geht auch einwandfrei. Leider funktioniert dies nur für ca. 300 oder 400 Calls (weis ich nicht genau).

Vieleicht könnt Ihr dies mal unter windows austesten, ob das problem auch dort besteht, oder ob es ein reines Linux problem ist.

Man zieht sich die TSNE_V2.bi sowie den TestServer. Anschliessend stellt man verbindungen zu diesem her, sendet den GET header, und nach erhalt beendet man diese verbindugn wieder. Dann stellt man erneut eine verbindugn her, usw. ..., ca. im 200ms takt (damits etwas schneller geht)

Das ganze geht ne ganze weile gut ... für ca. 300 verbindugnen ... danach wird beim aufruf der TSNE_Create_Accept zwar das ThreadCreate aufgerufen, jedoch wird die Thread_Event sub routine nicht mehr gecallt.

Der Aufruf von ....
Code:

Function TSNE_Create_Accept(ByVal V_RequestID as Socket, ByRef B_TSNEID as
'...
ThreadCreate(cast(Any Ptr, @Thread_Event), cast(Any Ptr, B_TSNEID))
'...
End Function

erzeugt einen neuen Thread und callt die Sub ...
Code:

Sub Thread_Event(ByVal V_TSNEID as UInteger)
'...
End Sub


Ich habe mir auch die Threadanzahl angesehen. Sie läuft nicht hoch, das man vermuten könnte, das die Threads nach dem ende zerstört werden. Es funktioniert problemlos, bis eben zu einer gewissen anzahl von durchläufen.

Ichhabe keine aAhnugn warum das so ist. Mir kommt es so vor, als wäre das ThreadCalling beschränkt, oder irgend eien art von Timeout beima ufruf integriert, so das in einer gewissen zeit nur eien gewisse anzahl von Threads erzeugt werden können (hab ichnoch nicht genau untersucht)

Ich wäre dankbar für jede hilfe, oder hinweis.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]


Zuletzt bearbeitet von ThePuppetMaster am 02.01.2008, 02:06, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 01.01.2008, 23:31    Titel: Antworten mit Zitat

Ich habe jetzt noch mal etwas ausprobiert, udn komme auf konstant 382 Calls. Ich kann leider keinen bezug mit dieser zahl erstellen ... ich hab keien ahnung warum genau diese anzahl. egal ob server oder client ... bei beiden die selben probs.

Hat jemand ne idee, was es mit dieser anzahl aufsich haben könnte!??

[EDIT]
Es hat sich herausgestellt, das Threads nach dem auslaufen noch im "Halboffenen Zustand" sind. Durch ein "ThreadWait" wird der halboffene zustand vollständig beendet. Daher ist es nötig ein ThreadWait zu nutzen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 02.01.2008, 15:04    Titel: Antworten mit Zitat

Bleibts dann trotzdem bei den 382 gleichzeitigen Connections?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 02.01.2008, 20:02    Titel: Antworten mit Zitat

Wenn man ThreadWait nutzt, dann nicht mehr. Es scheint mit dem Programm STACK zusmmen zu hängen. Wobei ich das auch nicht wirklich verstehe, da das Programm ansich funktioniert, nur eben keien Thread Calls mehr ausgeführt werden.
Ich kann es nicht genau sagen, warum udn weshalb, aber mit ThreadWait funktioniert es.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz