Мальчик, какой вопрос. Ответ, к которому:
Да, нет, хм, ну, в общем, это зависит
, Все это сводится к архитектуре системы. На IA32 правильно выровненный адрес будет атомарной операцией. Невыровненные записи могли бы быть атомарными, это зависит от кэширующейся используемой системы. Если память находится в единственной строке кэша L1 тогда, это является атомарным, иначе это не. Ширина шины между ЦП и RAM может влиять на атомарную природу: правильно выровненная запись на 16 битов на 8086 была атомарной, тогда как та же запись на 8088 не была то, потому что 8088 только имели шину на 8 битов, тогда как эти 8086 имели шину на 16 битов.
кроме того, если Вы используете C/C++, не забывают отмечать общее значение как энергозависимое, иначе оптимизатор будет думать, что переменная никогда не обновляется в одном из Ваших потоков.
\begin{align}
m\ddot{x}_{1}-K(x_{2}+x_{12})+C(\dot{x}_{12}+\dot{x}_{2})+2C\dot{x}_{1} &= fx_{1} \\
m\ddot{x}_{2}-K(x_{3}+x_{1})+C(\dot{x}_{1}+\dot{x}_{3})+2C\dot{x}_{2} &= fx_{2} \\
m\ddot{x}_{3}-K(x_{4}+x_{2})+C(\dot{x}_{2}+\dot{x}_{4})+2C\dot{x}_{3} &= fx_{3}
\end{align}
Короче говоря ... следующая идея использования eqnarray
кажется очевидной, но оказывается быть действительно плохой идеей . eqnarray
вызывает множество проблем, которые решаются в amsmath
и связанных пакетах. Прочтите Ларс Мэдсен: Избегайте eqnarray для деталей.
\begin{eqnarray*} %% Do avoid eqnarray if possible.
x_1 & = & 1 \\
x_2 & = & 2 \\
x_3 & = & 3
\end{eqnarray*}
(Ответ исправлен с учетом информации от Артура Ройтенауэра , Томаса и статьи Мэдсена, на которую ссылается Томас. )
Есть несколько пакетов, которые делают то, что вы хотите, один из наиболее широко используемых - AMS ' align
среда из пакета amsmath
.
Упрощенный фрагмент из amsldoc.pdf:
\begin{align}
x&=y \\
x’&=y’ \\
x+x’&=y+y’
\end{align}
Уравнения выровнены вокруг символов, следующих за и
(в данном случае знаки равенства) .