I've written a ~30k line Juce program thus far with nearly no multithreading, and probably therein lies my problem.
I've read up on the forum and source documentation without reaching a conclusion on the best way to go so I thought I'd ask for some pointers:
Very briefly, the point of my program is to receive loads of OSC messages over UDP, modify them interactively based on continuous input from the GUI, and send the results out again ASAP as OSC.
I only use a thread in the UDP receiving, where new packets are communicated from a thread to the main program with PostMessage from the UDP receiving thread.
My model uses Value objects, which are either set internally responding to incoming data, and their changes reflected in the GUI following Value::Listener::valueChanged(...) messages, or set following GUI components calling Value::setValue(...), and then the model reacting to the above event.
When there's a little bit of activity all is fine, but when there's more, the GUI freezes entirely, and I know this is a problem in my programming rather than simply too much data since the same amount of processing in a JAVA & Swing prototype I had made works just fine.
Now I know multithreading is a big topic, but perhaps you can get me started by pointing to how this issue is solved in examples, or what the main tools in Juce are for this? For example, I've read that Value objects are not thread safe, how do I best deal with that?
Sorry if the question is too general, any direction to discussion/reading that can get me started is much appreciated!