Как мне сделать любую библиотеку C ++, которую я делаю потокобезопасной? - PullRequest
5 голосов
/ 25 сентября 2011

Прежде всего, я достаточно опытен в C ++ и понимаю основы многопоточности и синхронизации потоков. Я также хочу написать собственный распределитель памяти как мой любимый проект и прочитал, что они должны быть поточно-ориентированными.

Я понимаю, что означает термин "потокобезопасный", но я понятия не имею, как сделать код C ++ потокобезопасным.

Существуют ли практические примеры или учебные пособия о том, как сделать код потокобезопасным?

В сценарии выделения памяти обеспечивает ли все функции мутации помеченные как критические разделы? Или есть что-то еще?

1 Ответ

3 голосов
/ 25 сентября 2011

То же, что и все проблемы с потоками: убедитесь, что когда один поток что-то меняет, другой поток не обращается к нему. Для системы выделения памяти, я думаю, вам понадобится способ убедиться, что вы не выделяете один и тот же блок памяти для 2 потоков одновременно. Независимо от того, является ли это упаковкой всего поиска или разрешением нескольких поисков, но блокировкой, когда таблица размещения должна быть обновлена ​​(что может привести к тому, что результат поиска станет недействительным, что потребует другого поиска), вам решать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...