Кто какие приемы использует для работы с данными общими для нескольких потоков?
Хорошо когда это пара переменных. А если несколько структур с десятками значений в каждой ?
Самое простое это во всех точках , где происходит запись, чтение или проверка условия, прикрывать эти операции во всех потоках семафорами. Это хорошо, когда таких операций мало.
Второй вариант - во всех тасках крутятся свои переменные (структуры) и в одном конкретном месте каждого таска происходит синхронизация, прикрытая семафором. с набором данных выбранным эталонным. Уже лучше, но могут возникнуть сложности с работой вроде бы с одними данными. но имеющими разные значения в разных тасках из- за еще несинхронности.