뮤텍스 및 pthread와 관련하여 질문이 있습니다.pthread 뮤텍스를 사용하여 공유 리소스를 처리하는 방법
공유 플래그가있는 경우이를 호출 할 수 있습니다 (F1). 그리고 여러 스레드가 있습니다. 그러나 단 하나의 스레드 (T1) 만 플래그를 올리거나/수 있으며 다른 모든 스레드 (T2..Tn)는 상태를 읽거나 끌어옵니다.
플래그 F1이 새로운 값으로 설정 될 때 T1이 mutex_lock/mutex_unlock을 사용하면 충분합니까? 다른 모든 스레드도 mutex_lock/mutex_unlock을 사용해야합니까? F1에서만 상태를 읽으려고합니까?
Exemple1:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
if(F1) {
/* Do something */
}
}
}
Exemple2:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
pthread_mutex_lock(&lock);
if(F1) {
/* Do something */
}
pthread_mutex_unlock(&lock);
}
}