Ich habe eine Frage zu Mutex und Pthreads.Umgang mit freigegebenen Ressourcen mit Pthread Mutex
Wenn eine gemeinsame Markierung vorhanden ist, können wir sie aufrufen (F1). Und es gibt mehrere Threads. Aber nur ein Thread (T1) kann das Flag erhöhen/beenden, und alle anderen Threads (T2..Tn) lesen oder ziehen nur den Status.
Ist es genug, wenn T1 mutex_lock/mutex_unlock verwendet, wenn das Flag F1 mit einem neuen Wert gesetzt wird? Sollten alle anderen Threads auch mutex_lock/mutex_unlock verwenden, auch wenn sie nur den Status von F1 lesen?
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);
}
}