【发布时间】:2010-12-10 07:37:22
【问题描述】:
我有一个至少调用一个线程的类。类可以有很多线程。该线程需要调用类的静态成员。每次调用静态成员之前是否必须使用互斥锁,以便其他线程不能同时调用成员?我可以对类的所有不同静态成员函数使用相同的互斥变量吗?我正在使用 pthreads 库。
【问题讨论】:
标签: thread-safety pthreads mutex
我有一个至少调用一个线程的类。类可以有很多线程。该线程需要调用类的静态成员。每次调用静态成员之前是否必须使用互斥锁,以便其他线程不能同时调用成员?我可以对类的所有不同静态成员函数使用相同的互斥变量吗?我正在使用 pthreads 库。
【问题讨论】:
标签: thread-safety pthreads mutex
这是一个复杂的、古老的多线程问题,没有直接的答案。这真的取决于你的使用模式:
此类问题的答案有助于确定应用哪种解决方案。例如,如果您需要吞吐量,则单个互斥锁可能更有效。如果您想最小化延迟,独立成员上的多个互斥锁(那些不需要与另一个成员一起使用的)将有助于减少线程之间的争用。如果读取是主要操作,您甚至可能根本不需要互斥锁 - 查看pthread_rwlock。
【讨论】: