Я создаю программу, которая имеет несколько потоков, используя один и тот же буфер.Я создаю буфер в глобальном формате как int *buffer
и динамически объявляю размер в main()
, используя malloc
.Задача буфера заключается в том, чтобы все потоки использовали этот буфер, и мне было интересно, как каждый поток изменит определенное место в буфере, чтобы все потоки увидели это изменение.
Например:
int *buffer;
int main(int argc, char *argv[]){
buffer = (int *)malloc(10 * sizeof(int));
}
Теперь мне было интересно, в функции, с которой будет работать pthread, как pthread изменит определенное место в buffer
, чтобы все остальные pthreadsувидим это изменение в глобальном массиве buffer
.
В функции, которую используют pthreads, я бы просто поменял место нормально?
Например:
void *thread_work(void *unused){
//beginning code
buffer[0] = 2;
//ending code
}
Когда я компилирую с этим кодом, он компилируется нормально, но мне было интересно, все ли pthread-ы теперь будут иметь buffer[0]
равным 2.
PS Я буду использовать мьютексные блокировки для синхронизации, чтобы они не были частьюмой вопрос, как я понимаю, как это реализовать.
Спасибо за ваше время!