Можно ли безопасно разделить целое число между потоками?

Есть ли проблема с несколькими потоками, использующими одну и ту же целочисленную ячейку памяти между pthreads в программе C без каких-либо утилит синхронизации?

Чтобы упростить проблему,

  • Только один поток будет записывать целое число
  • Несколько потоков будут читать целое число

Этот псевдо-C иллюстрирует мои мысли

void thread_main(int *a) {
  //wait for something to finish
  //dereference 'a', make decision based on its value
}

int value = 0;

for (int i=0; i<10; i++)
  pthread_create(NULL,NULL,thread_main,&value);
}
// do something
value = 1;

Я считаю, что это безопасно, поскольку целое число занимает одно слово процессора, и чтение / запись слова должно быть самой элементарной операцией, верно?

7
задан Mike 3 January 2011 в 22:20
поделиться