Основы Вопрос: Лучшие практики, касающиеся потоков Posix и динамической памяти - PullRequest
2 голосов
/ 02 ноября 2009

Целесообразно или даже возможно иметь динамически растущий массив структур, передаваемых и читаемых различными параллельно работающими потоками posix? Где я должен искать лучшие практики для приложений такого рода - есть ли что-то, что является "общей мудростью"? Я новичок в этой области и мне нужно несколько начальных указателей, с чего начать и на что обратить внимание. Кажется, здесь многое возможно, я не хочу попадаться в ловушки для новичков.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2009

Похоже, вы описываете потокобезопасный стек или очередь. Выполнение веб-поиска для термина «потокобезопасный» может помочь вам начать работу.

Как правило, вы защищаете свой массив мьютексом: мьютекс разблокируется по умолчанию, и когда поток обращается (изменяет или читает) к структуре, он сначала блокирует мьютекс, выполняет его модификации и разблокирует мьютекс. Если другому потоку необходим доступ к структуре данных, пока мьютекс заблокирован, он будет блокироваться до тех пор, пока поток, который заблокировал мьютекс, не разблокирует его.

2 голосов
/ 02 ноября 2009

Для хорошего источника "общего мудрости", посмотрите Улучшение производительности с помощью потоков . Хотя статья начинается с очевидных вещей, она имеет хорошее и простое описание шаблонов проектирования потоков.
Также обязательно прочитайте Параллельные структуры данных , которые должны дать вам представление о том, как организовать хранение данных.

...