2010-12-10 8 views
1

적어도 하나의 스레드를 호출하는 클래스가 있습니다. 클래스는 많은 스레드를 가질 수 있습니다. 이 스레드는 클래스의 정적 멤버를 호출해야합니다. 정적 멤버를 호출 할 때마다 뮤텍스를 사용해야하므로 다른 스레드가 동시에 멤버를 호출 할 수 없습니까? 클래스의 모든 정적 멤버 함수에 동일한 뮤텍스 변수를 사용할 수 있습니까? pthreads 라이브러리를 사용하고 있습니다.정적 클래스 멤버 함수에 뮤텍스 사용

답변

0

이 질문은 복잡하고 오래된 멀티 스레딩 질문이며 직접적인 대답이 아닙니다. 실제로 사용 패턴에 따라 다릅니다.

  • 정적 멤버에 많은 액세스가 있습니까?
  • 이들 멤버는 여러 스레드가 한 번에 동시에 액세스 할 수 있습니까 (단 몇 명이 아닌)?
  • 가장 많이 사용되는 정적 멤버는 무엇입니까?
  • 여러 정적 멤버가 함께 사용됩니까?
  • 작업에 주로 읽기가 포함되어 있습니까?

이러한 질문에 대한 답변을 통해 적용 할 솔루션을 결정할 수 있습니다. 예를 들어, 처리량이 인 경우 단일 뮤텍스가 더 효율적일 수 있습니다. 대기 시간을으로 최소화하려면 독립 멤버 (다른 멤버와 함께 사용할 필요가없는 멤버)에 대한 여러 뮤텍스가 스레드 간의 경합을 최소화하는 데 도움이됩니다. 독서가 주된 행동이라면 뮤텍스조차 원하지 않을 수도 있습니다 - pthread_rwlock을 확인하십시오.

관련 문제