У меня есть глобальная структура, которую я использую внутри потоков, которую я создаю, используя pthread.h
.
Есть параллельные потоковые события, обновляющие переменные внутри него.
Поэтому мои данные в структуре часто не синхронизированы, как я выяснил с помощью обширной отладки.
В Cafaik нет такого ключевого слова, как "synchonized
" (фон Java). Итак, как мне заблокировать структуру данных, чтобы она оставалась действительной?
Моя структура:
struct thread_data
{
int nr;
int time;
};
struct thread_data thread_data_array[MAX_THR];
MAX_THR определяется как 10, например.
Мои данные передаются в новый поток с pthread_create
:
pthread_create(&threads[num_threads], NULL, Thread_Fkt, &thread_data_array[num_thread]);
Иногда потоки создаются внутри других потоков. Там нет линейного завершения. Предоставляет ли C синхронизированный набор структур данных?
Спасибо;)