What are the tips you would offer to somebody who is developing a multithreaded application?
The only ones I can think of are:
Where it is avoidable, do not have multiple threads writing to the same data structure.
Where this cannot be avoided, have critical sections so that the latecoming thread will wait until is complete.
Avoid having global variables except constants.
Make sure that threads release the resource as soon as they are finished with them.
Can anybody think of anything else?