The main questions where I am, after my tests, totally unsure are:
- - it turns out that ReceiveNetworkData is NOT thread safe?
- SendNetworkData however IS thread safe?
- or should none of them be used inside a thread?
Code: Select all
Thread(ClientID)
Data = ReceiveNetworkData(ClientID)
Perform actions on Data
SendNetworkData
CreateNetworkServer
#PB_NetworkEvent_Data
CreateThread(ClientID)
even though SendNetworkData is still inside the thread:
Code: Select all
Thread(Data)
Perform actions on Data
SendNetworkData()
CreateNetworkServer
#PB_NetworkEvent_Data
Data = ReceiveNetworkData
CreateThread(Data)
Like that:
Code: Select all
Global NewList Responses()
Global Mutex
Thread(Data)
Perform actions on Data
LockMutex
Add Response Responses()
UnlockMutex
CreateNetworkServer
Repeat
#PB_NetworkEvent_Data
Data = ReceiveNetworkData
CreateThread(Data)
LockMutex
Foreach Responses()
SendNetworkData(Responses())
Next
ClearList(Responses())
UnlockMutex
Forever
Best regards