pthreads를 사용하여 나의 목적에 맞는 사용자 정의 된 스레드 풀을 작성하려고하는데, pthreads를 처음 사용합니다. 나는 온라인으로 (POSIX threads programming 및 Linux Tutorial Posix Threads) 자습서를 읽고 그들은 매우 도움이되었다,하지만 난 여전히 뮤텍스 및 조건 변수에 대한 몇 가지 (어쩌면 바보) 의심이 :pthreads를 사용하는 적절한 스레드 풀
- 뮤텍스의 범위는 무엇입니까? 전역 뮤텍스가 모든 전역 변수를 잠그면 한 번에 하나의 스레드 만 액세스 할 수 있습니까? 두 개의 전역 뮤텍스가 있다면 동일한 변수 세트를 잠글까요? 클래스 또는 함수 내부에서 선언 된 뮤텍스는 무엇입니까? 잠금/잠금 해제하면 어떻게됩니까?
- 방금 전역 변수를 읽고 전혀 수정하지 않을 계획이라면 여전히 뮤텍스 잠금을 사용해야합니까?
- 내가 맞으면 어떤 조건에서 잠자기 (또는
pthread_cond_wait()
을 사용하여 차단) 된 다른 스레드를 깨우기 위해 조건 변수가 사용됩니다. 수면 스레드에 대한 깨우기 호출은 다른 스레드의pthread_cond_signal()
또는pthread_cond_broadcast()
에 의해 제공됩니다. 일부 또는 모든 스레드가 작업을 수행하고 다음 작업이 사용 가능할 때까지 대기하도록 제어 흐름이 어떻게 발생합니까? 특히 4 개의 스레드가있는 시나리오에 관심이 있습니다. - 특정 프로세서 코어가 생성되기 전에 스레드의 선호도를 설정하여 (원하는 코어에서 실행을 시작하고 생성 후 코어가 이동하지 않도록) 방법이 있습니까?
질문이 어리석은 경우 미안하지만 말했듯이 나는 새로운 것입니다. 모든 도움, 의견, 코드 또는 좋은 리소스에 대한 포인터가 인정됩니다. 당신의 도움에 미리 감사드립니다.
답변을 주셔서 감사합니다. 특히 (1b), 오해가있었습니다. :) – Chatter
다른 사람들과 마찬가지로 여러 사람 중 첫 번째 사람이됩니다. 머리를 감싸기 전에 생각과 연습과 실수가 필요하며 심지어 뱀 비트를 얻는 것도 쉽습니다. – Duck