Есть ли недостаток в использовании boost :: interprocess :: interprocess_semaphore в одном многопоточном процессе c ++? - PullRequest
1 голос
/ 14 октября 2010

Недостатком было бы сравнение с техникой, которая специализировалась на работе с потоками, работающими в одном и том же процессе. Например, ожидание / публикация приводит к тому, что весь процесс дает результат, а не просто исполняющий поток, даже если любой, ожидающий публикацию, будет в том же процессе?

Семафор будет использоваться, например, для решения проблемы производителя / потребителя в общем буфере между двумя потоками в одном и том же процессе.

Есть ли разумные альтернативы?

1 Ответ

3 голосов
/ 14 октября 2010

Использовать Boost.Thread переменные условия , как показано здесь .В сопровождающей статье содержится краткое описание возможностей Boost.Thread.

Использование семафоров в межпроцессном режиме будет работать, но, скорее всего, это обернется налогом на выполнение из-за использования излишне тяжеловесных примитивов блокировки ОС (именованных объектов ядра в Windowsнапример).

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