【问题标题】:using mutexes on static class member functions在静态类成员函数上使用互斥锁
【发布时间】:2010-12-10 07:37:22
【问题描述】:

我有一个至少调用一个线程的类。类可以有很多线程。该线程需要调用类的静态成员。每次调用静态成员之前是否必须使用互斥锁,以便其他线程不能同时调用成员?我可以对类的所有不同静态成员函数使用相同的互斥变量吗?我正在使用 pthreads 库。

【问题讨论】:

    标签: thread-safety pthreads mutex


    【解决方案1】:

    这是一个复杂的、古老的多线程问题,没有直接的答案。这真的取决于你的使用模式:

    • 这些静态成员是否经常被访问?
    • 这些成员是否同时被多个线程同时访问(而不是仅仅几个)?
    • 哪些静态成员使用最多?
    • 多个静态成员是否一起使用?
    • 这些操作是否主要涉及读取?

    此类问题的答案有助于确定应用哪种解决方案。例如,如果您需要吞吐量,则单个互斥锁可能更有效。如果您想最小化延迟,独立成员上的多个互斥锁(那些不需要与另一个成员一起使用的)将有助于减少线程之间的争用。如果读取是主要操作,您甚至可能根本不需要互斥锁 - 查看pthread_rwlock

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 2011-08-22
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多