Singleton to store GameInstance reference

I want to access to my GameInstance from any place of my code and I created the next singleton class

class FLYING_API FGlobalAccessor
{
public:
	static FGlobalAccessor& Get();

	void SetGameInstance(UArenaGameInstance* GameInstance);
	TWeakObjectPtr<UArenaGameInstance> GetGameInstance();

private:
	TWeakObjectPtr<UArenaGameInstance> GameInstance;

	static TSharedPtr<FGlobalAccessor> GlobalAccessor;
}

I want use next construction to access from any place of my code: FGlobalAccessor::Get().GetGameInstance();
But wait… This is static variable! If I ran editor with multiple windows, what I got if I try access to this?
I got last setted GameInstance from all windows?

Okay… I thought all windows runs in different threads and I can store accessing to GameInstance by current thread ID, but all windows runs in MainThrd O_O

How to solve this problem? Are there ways?

Special appeal to Rama! You wrote the page where used access to GEngine, Is right way to use it in multiple windows?

Thanks!

I want to know it, too.