Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Если написать код: Код: plaintext 1. и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке... В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты. Вспоможите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 22:20 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVМожно только дизассемблированный код посмотреть на этой страничке... А его недостаточно? Вычисление синуса - одна ассемблерная команда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 22:51 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovGermanVМожно только дизассемблированный код посмотреть на этой страничке... А его недостаточно? Вычисление синуса - одна ассемблерная команда. Интересен вопрос: какой ценой собственно достигается многопоточность? А насчет одна команда- не согласен: даже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 23:11 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVдаже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно. Не может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный стэк и набор регистров. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 23:27 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVDimitry Sibiryakovпропущено... А его недостаточно? Вычисление синуса - одна ассемблерная команда. Интересен вопрос: какой ценой собственно достигается многопоточность? А насчет одна команда- не согласен: даже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно. Каждый поток имеет свой стек операций. Стеки не пересекаются. Для вычисления FSIN процессор переключается в режим FPU и очень быстро за несколько тактов вычисляет значение синуса. Никакой особой синхронизации здесь не нужно так же как и не нужно синхронизировать АЛУ процессора для сложений и вычитаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 23:29 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНе может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный стэк и набор регистров. Тогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Ведь они и так разделены! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:06 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVТогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Кроме стэка и регистров есть ещё куча прочей памяти. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:16 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти. Вот и я про тоже! А вдруг эти товарищи видоизменяют реализацию наших любимых функций для придания им многопоточности. Причем нам ничего не говорят и окончание _s не добавляют (из разряда "А мужики-то не знают!"). Хочется понять как они свою многопоточность реализовали для всех библиотек CRT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:45 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти. есть ещё TLS, но зачем это всё для вычисления синуса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:47 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVА вдруг эти товарищи видоизменяют реализацию наших любимых функций Откуда у человека, изучающего С всего неделю вдруг завелись "любимые функции"?.. И, кстати, какой это компилятор предлагает потокобезопасный синус? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:49 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVDimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти. Вот и я про тоже! А вдруг эти товарищи видоизменяют реализацию наших любимых функций для придания им многопоточности. Причем нам ничего не говорят и окончание _s не добавляют (из разряда "А мужики-то не знают!"). Хочется понять как они свою многопоточность реализовали для всех библиотек CRT. Синхронизация нужна при обращении по одному и тому же адресу памяти. Зачем это в синусе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 01:01 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVТогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Для защиты от различных атак. Например buffer overflow. Никакой связи с многопоточностью здесь нет. Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries Security Features in the CRT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 01:04 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVЕсли написать код: Код: plaintext 1. и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке... В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты. Вспоможите! sin(0.2) - это константа, компилятор его может смело заменить на Код: plaintext 1. и функции синуса ты вообще не найдешь. Можно попробовать с переменной. Или выложи дизассемблированный код посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 02:50 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
m_SlaGermanVЕсли написать код: Код: plaintext 1. и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке... В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты. Вспоможите! sin(0.2) - это константа, компилятор его может смело заменить на Код: plaintext 1. и функции синуса ты вообще не найдешь. Можно попробовать с переменной. Или выложи дизассемблированный код посмотреть. Надо так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 03:13 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
m_Slasin(0.2) - это константа, компилятор его может смело заменить на Код: plaintext 1. sin(0.2) - это НЕ константа. Вообще никто не гаратирует что вызовется именно библиотечная функция sin. Если предоставить свою реализацию, то линкер выкинет библиотечную и свяжет с пользовательской, и вызовется именно она, и далеко не факт что она не имеет какого-то глобального состояния в рантайме. А значит компилятор не имеет права вычислять это выражение в момент компиляции. Вот в С++11 сделали возможность объявить функцию constexpr (не любую правда) и вот вызов такой функции от константных аргументов компилятор уже обязан вычислить при компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:18 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
по одному и тому же адресуСинхронизация нужна при обращении по одному и тому же адресу памяти. Зачем это в синусе? Ну что вы к этому синусу привязались? Функций в стандартных библиотеках много, и все они не реализованы аппаратно на ЦП. Однако все они многопоточные. Вы можете ответить на простой вопрос: какой основной принцип переделки функций CRT в многопоточный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:39 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVкакой основной принцип переделки функций CRT в многопоточный вариант?\ переделке подлежат функции, использующие общие данные процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 10:50 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanV, Можно поставить исходники CRT, когда ставишь студию. Правда я сам последние студии не ставил, но традиционно такая возможность всегда была. А многопоточность - все просто, для этого не надо читать что-то. Функции в CRT либо повторновходовые, либо нет. Для последних либо делаются мьютексы для сериализации вызовов, либо контекст хранится в thread local storage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 11:43 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanV Интересен вопрос: какой ценой собственно достигается многопоточность? А насчет одна команда- не согласен: даже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно. Синус — повторновходовая функция. Проблем вообще никаких не должно быть. Сравни например с strtok. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 11:47 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVDimitry SibiryakovНе может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный стэк и набор регистров. Тогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Ведь они и так разделены! _s — это совсем из другой оперы, это не про многопоточность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 11:49 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
скачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 12:21 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
bazileДля защиты от различных атак. Например buffer overflow. Никакой связи с многопоточностью здесь нет. Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries Security Features in the CRT А можно какую- нибудь книжку посоветовать о методах программирования, позволяющих защитить свой код от уязвимостей? Я вот в кучах создаю огромные массивы и боюсь переполнений (эти ошибки очень трудно отследить). Может создать какие-то дополнительные проверочные процедуры анализа стека на входе/выходе из функций кода и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 12:22 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
chabapokскачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете. Я не использую Линукс из-за низкого качества поддержки. По сути вся поддержка этих систем сводится к древним форумам, где пара троллей глумится над новичками, воображая себя отцами учителями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 12:30 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
Изопропилпеределке подлежат функции, использующие общие данные процесса. Можно подробнее? Вводится ли новая функция или заменяется старая? Как это отражается на производительности? Какой-нибудь пример есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 12:33 |
|
||
|
VS2012: Как посмотреть реализацию функции sin(x)?
|
|||
|---|---|---|---|
|
#18+
GermanVchabapokскачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете. Я не использую Линукс из-за низкого качества поддержки. По сути вся поддержка этих систем сводится к древним форумам, где пара троллей глумится над новичками, воображая себя отцами учителями. Я-бы себе прикупил хороший коммерческий линукс для десктопа при условии что будет телефонная линия поддержки и нормальная служба говорящая на местном языке. Но где в нашей стране (Украине) найти подобное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38092762&tid=2020560]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 400ms |

| 0 / 0 |
