|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2011, 23:52 | #1 |
Пользователь
Регистрация: 16.11.2009
Сообщений: 51
|
InterlockedExchangeAdd
Как использовать эту функцию с типом double??? Числа прибавляются дробные и немаленькие. так что подходит только double или long double. Но метод просит именно long. Что подскажете?
З.Ы. Програму пишу в универ. В задании четко прописано, что использовать только атомарные операции Interlocked. |
20.11.2011, 00:02 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> Как использовать эту функцию с типом double?
никак
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
20.11.2011, 02:18 | #3 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
ardor
Как использовать эту функцию с типом double??? никак. З.Ы. Програму пишу в универ. В задании четко прописано, что использовать только атомарные операции Interlocked. Четко прописываешь что задание выполнить невозможно в связи с его (задания) тупизной.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
20.11.2011, 09:12 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
что ж вы так сразу... может не зря целая отрасль программирования занимается разработкой алгоритмов на целых числах?..
по теме: как вариант узнаете точность дабла и все ваши даблы домнажаете, получа инты... тут конечно надо подумать над хранением и операциями |
20.11.2011, 09:36 | #5 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
вообще-то размер double 8 байт, Interlocked-функции работают с LONG, т.е. 4 байта. Если работать с double по частям, то операция уже будет не атомарной, и будет потерян весь смысл использования Interlocked-функций
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
20.11.2011, 10:45 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Вообще-то сама организация double сильно отличается от long и даже 4-байтовый float туда не подсунуть. Ну, и так-то есть InterlockedExchangeAdd64, но всё равно это не поможет.
|
21.11.2011, 03:50 | #7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> использовать только атомарные операции Interlocked
ну в принципе, можно долбить в цикле InterlockedCompareExchange(flag, 1, 0), пока оно нам не вернёт 0, после чего спокойно сложить свои double, и сбросить flag в 0. Это если задасться целью использовать именно атомарные операции Interlocked где надо и где не надо
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|