Hi,
Ich benutze in meinem Programm threads und meine variablen werden manchmal so komisch überschrieben. Ich bekomme dann vom server 2 sachen ( für jeden thread ).
Zum Beispiel AAAAAA und BBBBBB. Dann, parse ich diese Eingaben und dann bekomme ich den Error, dass der Parser nicht weiß was er mit AABBA machen soll.
Es sind auch weniger Buchstaben, als bei den Sachen die der Server gesendet hat. Warum kann das passieren? Ich habe auch locks eingebaut, aber ich weiß nicht warum immer dieser Fehler kommt.
Ein Fehler vom Server ist es bestimmt nicht. Das habe ich schon überprüft.
Hat jemand ideen woran das liegen kann
Variablen werden verfälscht !?
Code?
Ich stell hier nicht den ganzen Code rein, weil der einfach viel zu lang ist ( 4000 Zeilen ) aber ich versuche das mal nachzustellen... Poste ich dannCM hat geschrieben:Code?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Hier:
der Server http://paste.pocoo.org/show/203321/
der Client http://paste.pocoo.org/show/203323/
Kann sowas überhaupt passieren oder liegt das vielleicht an meinem Programm? Vielleicht initialisieren die thread 2 variablen and der gleichen adresse, und dann schreiben die da Code rein, oder sowas wie ein bufferoverflow, vielleicht rede ich aber auch einfach nur schwachsinn...
der Server http://paste.pocoo.org/show/203321/
der Client http://paste.pocoo.org/show/203323/
Kann sowas überhaupt passieren oder liegt das vielleicht an meinem Programm? Vielleicht initialisieren die thread 2 variablen and der gleichen adresse, und dann schreiben die da Code rein, oder sowas wie ein bufferoverflow, vielleicht rede ich aber auch einfach nur schwachsinn...
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Was heißt denn atomar? sry, ich habe gerade nur atom gefunden: http://de.wikipedia.org/wiki/AtomarDasIch hat geschrieben:Wie kommst du darauf dass .send() auf ein socket atomar ist?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
@INFACT Der Artikel hat einen Abschnitt Informatik der nebenbei auch noch den Artikel atomare Operation verlinkt, der den Begriff erklärt.
Ich habe jetzt das da eingebaut, aber es funktioniert trotzdem nicht:
Hab ich das falsch verstanden oder warum funktioniert das nicht?
Code: Alles auswählen
self.socketLock.acquire()
conn.send(ret)
self.socketLock.release()
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
ich kenne mich mit den internen vorgängen des socket moduls zwar nicht aus, aber in der Dokumentation steht man sollte am besten eine zweierpotenz für den bufsize parameter nehmen, vieleicht probierst du mal eine bufsize von 8192 (2^13) was andres fällt mi auch nicht ein...