использование мьютексов в статических функциях-членах класса - PullRequest
1 голос
/ 10 декабря 2010

У меня есть класс, который вызывает хотя бы один поток.Класс может иметь много потоков.Этот поток должен вызывать статические члены класса.Нужно ли использовать мьютекс перед каждым вызовом статических членов, чтобы другие потоки не могли вызывать члены одновременно?Могу ли я использовать одну и ту же переменную мьютекса для всех различных статических функций-членов класса?Я использую библиотеку pthreads.

1 Ответ

0 голосов
/ 10 декабря 2010

Это сложный, старый многопоточный вопрос без однозначного ответа.Это действительно зависит от ваших шаблонов использования:

  • Много ли обращаются к этим статическим элементам?
  • Доступ к этим элементам одновременно одновременно осуществляется несколькими потоками (в отличие от пары)?
  • Какие статические элементы используются чаще всего?
  • Используются ли вместе несколько статических элементов?
  • Включают ли операции в основном чтение?

Ответы на подобные вопросы могут помочь определить, какое решение применить.Например, если вам нужна пропускная способность 1016 *, один мьютекс может быть более эффективным.Если вы хотите минимизировать latency , несколько мьютексов на независимых членах (те, которые не нужно использовать с другим) помогут минимизировать конфликт между потоками.Если чтение является основным действием, вам может даже не потребоваться мьютекс - проверьте pthread_rwlock.

...