I have a situation where I need to add/remove elements to global linked list from multiple threads. For example:
Code: Select all
If Not #PB_Compiler_Thread
MessageRequester("", "Run in threadsafe mode", #MB_OK|#MB_ICONERROR)
End
EndIf
Global NewList Guinea_Pig.s()
Global Mutex = CreateMutex()
Procedure Add_Remove_Element_To_List(Void)
Repeat
Delay(Random(1000))
LockMutex(Mutex)
AddElement(Guinea_Pig())
Guinea_Pig() = Str(Random(9999999))
FirstElement(Guinea_Pig())
DeleteElement(Guinea_Pig(), 1)
UnlockMutex(Mutex)
ForEver
EndProcedure
For i = 1 To 100
CreateThread(@Add_Remove_Element_To_List(), 0)
Next
MessageRequester("", "Click OK to finish")