Threads und Mutex bei LinkLists - Fragen
Verfasst: 28.06.2008 17:09
Da bin ich wieder um mit Fragen zu nerven 
Wenn jetzt, sagen wir mal 30 Clients gleichzeitig versuchen sich einzuloggen,
hält die Abbarbeitung eines Threads, wenn er bei LockMutex ankommt an, wenn
ein anderer Thread dort gerade Daten in die Liste einfügt ? Oder muss man
das anders realisieren, damit die Werte in der Liste nicht durcheinanderkommen ?
Und Wenn ich jetzt z.B. in Part II noch eine Stringoperation habe, die NUR in
diesem Thread aktiv ist, also z.B. String.s = "hallo", muss ich dann auch
wieder LockMutex anwenden (Also immer bei Manipulationen bei String und Double) ?
Wenn ich aus einem Thread eine andere Procedure aufrufe, die Strings verändert,
muss ich den Procedureaufruf auch in Mutex einbinden (also mehrfache Aufrufe von LockMutex()) ?
Kann man in einem Thread auch einen weiteren Thread aufrufen und dann mit Waitthread
auf den aufgerufenen warten ohne das man mit merkwürdigem Verhalten rechnen muss ?
Muss man bei Änderung von Globalen Variablen auch "Mutexen" ?

Code: Alles auswählen
; Beispielcode ohne Zweck...
Procedure ConnectClient(*ClientID)
Shared Mutex
; Part I : hier steht viel Code ....
LockMutex(Mutex) ; entfernen Sie das ';' um den Unterschied zu sehen
;Hier die LinkList
AddElement(Client())
Client()\ID = ClientID
Client()\Accountname = Account.s
UnlockMutex(Mutex) ; entfernen Sie das ';' um den Unterschied zu sehen
;Part II : Hier steht noch mehr Code
EndProcedure
Mutex = CreateMutex()
Empfang(ThreadNumber) = CreateThread(@ConnectClient(), ClientID)
hält die Abbarbeitung eines Threads, wenn er bei LockMutex ankommt an, wenn
ein anderer Thread dort gerade Daten in die Liste einfügt ? Oder muss man
das anders realisieren, damit die Werte in der Liste nicht durcheinanderkommen ?
Und Wenn ich jetzt z.B. in Part II noch eine Stringoperation habe, die NUR in
diesem Thread aktiv ist, also z.B. String.s = "hallo", muss ich dann auch
wieder LockMutex anwenden (Also immer bei Manipulationen bei String und Double) ?
Wenn ich aus einem Thread eine andere Procedure aufrufe, die Strings verändert,
muss ich den Procedureaufruf auch in Mutex einbinden (also mehrfache Aufrufe von LockMutex()) ?
Kann man in einem Thread auch einen weiteren Thread aufrufen und dann mit Waitthread
auf den aufgerufenen warten ohne das man mit merkwürdigem Verhalten rechnen muss ?
Muss man bei Änderung von Globalen Variablen auch "Mutexen" ?