информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetГде водятся OGRыSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Еще один велеколепный миф... 25.02.02 20:05  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
приказал долго жить.
Итак простейший код (кстати поднимал тут похожий вопрос):

int x;

f1( )
{
x = 0;
RunThread_f2( );

x=1;
}

f2( )
{
int mith;
mith = x;
}

Вобщем всегда лепил в таком коде объекты синхронизации, дабы mith "не оказался непонятно чем". А вот вчера подумал и понял, что он может быть только либо 1 либо 0. Не может у нас быть переключение задач во время mov, ни как не может. А я не знаю ни одного компилятора который бы целое число перемещал побайтно. Значит это будет одна ассемблерная инструкция. А при ее исполнении даже прерывание от таймера не придет. (Все внешнии прерывания только между инструкциями).
Блин, сколько же кода можно было бы ускорить не обращаясь к семафорам и мьютексам...
[C++] Еще один велеколепный миф... 25.02.02 21:26  
Автор: z0 <z0> Статус: Member
Отредактировано 25.02.02 21:52  Количество правок: 1
<"чистая" ссылка>
простой mov - да, согласен
с ним даже lock не используется (начиная с тройки)
но тем не менее ВНУТРИ rep-нутых команд происходят прерывания
а на многопроцессорных системах (использование например DMA уже дает много -блин- двухпроцессорную сиситему) есть туча команд которые могут быть приостановлены ВНУТРИ не прерыванием а другим процессором и получается INCONSISTENTY в памяти)
а еще на память прихдят старые процы которые по шине передавали слово ПОБАЙТНО в том числе и mov-ом
так что очень внимательно надо выкидывать синхронизаторы, двадцать раз проверять и смотреть код сгенерированный обязательно
лучше оставит этот синхронизатор гребучий если конечно не очень тормозит
[C++] Ты пытаешься Дж. Рихтера оспорить (глава "Синхронизация потоков") ... - так это ты зря... 25.02.02 21:40  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Тут проблем много может быть (без синхронизации) ... не мудри лучше ...
Одна из самых серьезных - хранение переменных в регистрах ... - volatile может помочь, но не всегда ...
ЗЫ: Удели серьезное внимание изучению ассемблера и железа - твои формулировки недостаточно корректны ...


можно использовать ассемблерные вставки. но осторожно и аккуратно. 28.02.02 06:17  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach