ミューテックスと pthread について質問があります。
共有フラグがある場合は、それを呼び出しましょう (F1)。そして、複数のスレッドがあります。ただし、1 つのスレッド (T1) のみがフラグを上げたり停止したりでき、他のすべてのスレッド (T2..Tn) はステータスの読み取りまたはプルのみを行います。
フラグ F1 が新しい値で設定されるときに、T1 が mutex_lock/mutex_unlock を使用すれば十分ですか? 他のすべてのスレッドも、F1 からステータスを読み取るだけであっても、mutex_lock/mutex_unlock を使用する必要がありますか?
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);
}
}