速度の最適化に重点を置いて、QT を使用して C++ アプリを作成しています。異なるスレッドに対して読み取り専用アクセスを持ついくつかのグローバル オブジェクトが必要です。スレッドを開く前に、グローバル オブジェクトを初期化し、データを入力する必要があります。
グローバル オブジェクトのセット関数を保護しながら、メイン関数からアクセスするにはどうすればよいですか?
現在のようなコード例:
myClass.h
class MyObjectClass {
public:
void SetSome(const QList<QString> &value);
QList<QString> GetSome() const;
private:
QList<QString> m_myMember;
};
main.cpp
#include "global.h" // some like: extern MyObjectClass g_InihalizedInMain;
#include "anyThread.h"
int main(){
g_InitializedInMain.SetSome() // This Shut work
MyThread thread;
thread.start();
//..
return 0;
}
anyThread.cpp:
#include "global.h"
void thread::run()
{
MyObjectClass newObject = g_InihalizedInMain; //This shut work
g_InitializedInMain.GetSome(); //This shut work
g_InitializedInMain.SetSome(); //This shut not work and give me an error during compile time
newObject.SetSome(); //This shut work
}
デザインのアイデアをいくつかいただければ幸いです。どうもありがとうございました。