Параллельная запись в одну и ту же область глобальной памяти

У меня есть несколько блоков, каждый из которых имеет несколько целых чисел в массиве общей памяти размером 512. Как я могу проверить, содержит ли массив в каждом блоке ноль в качестве элемента?

Я создаю массив, который находится в глобальной памяти. Размер этого массива зависит от количества блоков, и он инициализируется нулем. Следовательно, каждый блок записывает в a [blockid] = 1 , если массив разделяемой памяти содержит ноль.

Моя проблема в том, что у меня одновременно записываются несколько потоков в одном блоке. То есть, если массив в разделяемой памяти содержит более одного нуля, то несколько потоков запишут a [blockid] = 1 . Это вызовет какие-нибудь проблемы?

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

16
задан Auron 7 December 2011 в 14:20
поделиться