Я работаю над упражнением, данным моим университетом в отношении реализации блокировки очередей на основе массива.Блокировка очередей на основе массива - переполнение хвоста
Мой вопрос следующий: что произойдет, если переменная tail
, ответственная за предоставление каждой ожидающей нити своей соответствующей позиции, переполнения? Я не имею в виду переменную tail
, растущую по размеру массива, я говорю о переполнении как целого.
Используя mod, вы найдете нужную позицию, которую должен иметь поток в массиве, если хвост не переполнен. Как только он переполняется, использование мода на нем может указывать на позицию, которая уже занята, или это может привести к тому, что она оставит следующую позицию после того, как предыдущий элемент хвоста не будет использован, тем самым не позволяя потокам последовательно разблокировать массив и иметь нормальный выполнение.
Любые советы по решению этого вопроса?
Как это дистанционно ответит вопрос? – Makoto
Я просто не заметил, что не вставлял комментарии, почему -1? –
Откуда вы знаете, что OP использует C? Мне непонятно, на каком языке они говорят. – Makoto