Это классическая задача читателей-писателей, способы решения этой задачи легко гугляся. Если вы хотите сделать функцию update потокобезопастной, то можете использовать любые доступные методы синхронизации. В данном случае нет серебряной пули и необходимо выбирать способ синхронизации самому. Вот пара простейших идей:
- Сделайте переменные, изменяемые в методе Update типа atomic.
- Сделайте доступ к данным через мьютекс (что в вашем конкретном примере не совсем эффективно, но очень просто в реализации).
- Если у вас предполагается лишь 1 поток (полагаю, что в данной задаче использование большего числа потоков не актуально), который будет обрабатывать функцию Update, то в начале функции вы можете сохранить все модифицируемые переменные (поля объекта) в локальные переменные и в конце функции взять мьютекс и сохранить значение локальных переменных в поля объекта.
Также интересно имеет ли смысл просчитывать физику объектов без ее отрисовки? Если данные физики качающего маятника используются лишь для отрисовки его на экране, то смысла в распараллеливании, насколько я понимаю, не очень уж много.