使用すべきかどうかわからないシナリオが 2QMutex
つあります。プログラムをQMutex
何度も実行しましたが、異常な動作は見られませんでした。簡単にするために、ここでコードをざっと見ました。しかし、安全面として、使用する必要があるかどうかを知りたいQMutex
ですか?
シナリオ #1:
class A : QObject
{
Q_OBJECT
private double **array;//it is initialised in the constructor & is 100x100
slots:
slot1(); //2 Qthreads are created in my main GUI thread along with 2 objects of class A, & by A aobj.movetothread();
slot2(); //& connecting these 2 slots to started() SIGNAL of respective QThread's
//I have multi-threaded my application.
}
A::slot1()
{
double temp = array[i][j];
//some operations on temp
}
A::slot2()
{
double temp = array[i][j];
//some operations on temp
}
注: の内容はarray[][]
、初期化後に変更されません。2 つのスレッドで情報にアクセスしているだけです。ただし、同じ要素が両方のスレッドから同時にアクセスされる場合があります。array
シナリオ 2
A::slot1()
{
double temp = somefunc();
array[0][j] = temp;
}
A::slot2()
{
double temp = somefunc();
array[50][j] = temp;
}
注: この場合、2 つのスレッドは同じ配列の要素を変更しますが、共通の要素を変更/アクセスしません。つまり、スレッド1 は最初の50 行を処理し、スレッド2 は次の 50 行を処理しますが、行にはアクセスしません。お互いの。