我有一个调用至少一个线程的Class。 Class可以有很多线程。该线程需要调用Class的静态成员。在每次调用静态成员之前是否必须使用互斥锁,因此其他线程不能同时调用成员?我可以为类的所有不同静态成员函数使用相同的互斥变量吗?我正在使用pthreads库。
答案 0 :(得分:0)
这是一个复杂的,历史悠久的多线程问题,没有直截了当的答案。这实际上取决于您的使用模式:
这些问题的答案有助于确定应用哪种解决方案。例如,如果您需要吞吐量,则单个互斥锁可以更高效。如果要最小化延迟,独立成员上的多个互斥锁(那些不需要与另一个成员一起使用的互斥锁)将有助于最小化线程之间的争用。如果阅读是主要操作,您甚至可能根本不需要互斥锁 - 请查看pthread_rwlock
。