mutexとpthreadsに関する質問があります。pthread mutexで共有リソースを処理する方法
共有フラグがある場合は、そのフラグを呼び出します(F1)。そして、複数のスレッドがあります。 しかし、1つのスレッド(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);
}
}