Форум
.NET
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, vsb, Вы писали: vsb>Здравствуйте, paradok, Вы писали: >>>>Когда несколько процессоров работают с одним адресом памяти P>>это надо специально запрграммировать... сама по себе такая ситуация не может возникнуть... или давайте пример кода! vsb>[code=java] vsb>class Ab { vsb> public int a; vsb> public int b; vsb>} vsb>void thread1(Ab ab) { vsb> ab.a = 5; vsb> ab.b = 10; vsb>} vsb>void thread2(Ab ab) { vsb> if (ab.a != 5 && ab.b == 10) { vsb> impossible(); vsb> } vsb>} vsb>[/code] vsb>Вот пример кода. Без барьеров памяти на некоторых архитектурах (вроде ARM) функция impossible может быть вызвана, хотя это противоречит интуиции. Могут быть и более тонкие баги, к примеру конструктор вызывается в одном потоке, указатель на сконструированный объект передаётся в другой поток, но другой поток видит не до конца сконструированный объект и будут очень странные баги. В Java в конструкторы специально вставляются нужные барьеры, чтобы такой ситуации не возникло, про C# не знаю. В С++ такое точно возможно. P>>если же вы сами запрограммировали создание шаред мемори и сами ее меняете из разных процессов то и сами должны позаботиться о синхронизации и никакие барьеры вам не нужны vsb>Общая память чаще встречается при многопоточном программировании. Внутри одной программы все потоки имеют доступ к общей памяти процесса. vsb>Если использовать синхронизацию, дополнительно никакие барьеры действительно не нужны. Барьеры нужны, когда кажется, что использовать синхронизацию - слишком дорого и хочется ускорить подобный код. Т.н. lock-free алгоритмы используют подобный подход.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …