Самое близкое, что вы можете сделать, это использовать атрибут ThreadStatic
в вашей переменной экземпляра синглтона. Это будет поддерживать статическую семантику с точки зрения доступа, но у каждого потока будет свой экземпляр.
public class ThreadStaticSingleton
{
[ThreadStatic]
private static ThreadStaticSingleton instance;
public static ThreadStaticSingleTon Instance
{
get
{
if(instance == null) instance = new ThreadStaticSingleton();
return instance;
}
}
}
Это, как говорится, может очень легко не быть тем, что вы хотите. Если вам нужно, чтобы несколько потоков обращались к одному и тому же экземпляру через статическую переменную, или один поток имел доступ к различным экземплярам по одной и той же переменной, это не будет работать.
Другими словами, это будет работать, если оба из следующих истинны:
- Каждый игровой движок работает в своем собственном потоке
- Каждый игровой движок только работает в одном потоке
В противном случае вам, вероятно, придется пойти по заводскому шаблону, где каждый движок передает какую-то идентифицирующую информацию (даже если это просто this
) статической функции, чтобы получить экземпляр, а не просто использовать Instance
собственность.