Если ключевое слово volatile
используется с переменной, все потоки получат последнее значение переменной из основной памяти. Обратите внимание, что он не получает блокировку, поэтому, если вы хотите выполнить какую-либо атомарную операцию, volatile
недостаточно. Для атомарных операций используется synchronized
. В вашем случае вы только читаете значение m_gameState = a_gameState;
, так что энергозависимо достаточно.
Надеюсь, это поможет.
Прошло две недели с моими моделями Model & View в dll, моим xaml в exe и без каких-либо проблем.
Я не вижу особых проблем с этим подходом, кроме общих за / против использования нескольких / многих проектов.
We use this kind of separation in all of our products because it helps us to see if any code violates against the UI - business logic separation.
Most times we do it the same way as you have suggested:
Sample.Presentation.exe (Contains all the WPF stuff, thin assembly)
Sample.Applications.dll (Is responsible to the application's workflow, here are all ViewModels)
Sample.Domain.dll (Here are the business rules)
We don't have encountered any issues yet and I don't expect to see any problems in future.