
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" ?