Предположим, у нас есть общая очередь (реализованная с помощью массива), к которой могут обращаться два потока, один для чтения из нее данных, а другой для записи в нее данных. Теперь у меня проблема с синхронизацией. Я реализую это с помощью Win32 API (EnterCriticalSection и т. д.).
Но мне любопытно, каким будет код критической секции в операциях постановки в очередь и удаления из очереди?
Просто потому, что два потока используют общий ресурс? Почему я не вижу никаких проблем, так это: передняя и задняя часть сохраняются, поэтому, когда ReaderThread читает, он может читать из передней части, а когда WriterThread записывает, он может легко записывать в заднюю часть.
Какие потенциальные проблемы могут возникнуть?