atof, strtod и локаль.
Внезапно: а вот как положено в коде на С конвертить строку в double, если мы точно знаем, что в строке десятичный разделитель ".", и точно знаем, что код будут запускать на системе с адовыми локалями, у которых разделитель "," типа русской, белорусской итд?
В дотнете, как положено, есть функция с параметром для локали и инвариантная локаль InvariantCulture.
А в олдскульно-кошерном C как?
setlocale(LC_NUMERIC,"C"); чо-то не рекомендуют, говорят, не thread-safe.
no subject
2) Мнение, что разделителем можэт быть запятая -- это ересь, посему setlocale(LC_NUMERIC, "C")
3) char *dot;
if ((dot = strchr(s, '.'))) {
*dot = *nl_langinfo(RADIXCHAR);
}
no subject
Расскажите.
no subject
no subject
no subject
no subject
Ну и форкнешь воркера, потом сиди организовывай IPC дабы его прогресс отобразить и результаты получить... Как взаимодействовать с воркером предполагается? И как выглядит для юзера форк гуевого приложения, кстати? Ну и потом, говорим GUI - подразумеваем винду, реже ios и андроид, реже MacOS, но уж совсем редко прочие юниксы. Как там у эрланга, ghc и скалы с iOS?
no subject
биндинги к ГТК из коробки. Подойдет?
>Как взаимодействовать с воркером предполагается?
Через mmap отдать - забрать результаты и через пайп/сокет/msg_queue читать диагностику/слать команды, благо такой функционал предоставляется по-моему везде.
>эрланга, ghc и скалы c ios ?
понятия не имею, я от яблочного мира бесконечно далек. На андроиде есть жаба, а скала - это жаба, так что скала на андроиде должна быть, но про остальное - просто не в курсе
no subject
Если через общую память общаться, то нафик и форкать было. Разве что для большей стабильности. Только припоминаю, что мне регулярно удавалось в ХР синий экран сделать при общении моих процессов через расшаренную память. Система, конечно, не лучшая и не свежая, но все еще актуальная.
Скала да, выглядит неплохим выбором. Только сложная она, многие жалуются. Даже из тех, кто освоил, некоторые отмечают падение скорости разработки.
no subject
Именно для надежности. Приложение вообще надо распиливать на максимальное число изолированных задач, чтобы при необходимости резетить их без большого дизастера. Особенно предполагающие много фоновых вычислений.
no subject
(no subject)
(no subject)
(no subject)
no subject
Конечно, организовывай. А что, в трэдах оно без ITC делается? ORLY? И сколько секунд при этом проходит до разноса памяти в щепки?
no subject
no subject
При этом, кстати, сделать передачу данных в pipe так, чтобы она обычно работала, но иногда делала что-то не то -- достаточно нетривиально. Ну, в смысле, что это какие-то кондовые такие ошыбки, которых в нормальном случае будет видно быстро.
С трэдами -- всё, в общем-то, наоборот.
no subject
no subject
Бэкграунд-воркеры надо запускать через fork+exec. Если беспокоит скорость обмена данными -- то можно использовать mmap() на один файл, но в общем это всё preliminary optimisation. И выигрыш от возможности размазать программу на 100500 нод кластера обычно гораздо большэ, чем выигрыш от отсутствия одного memcopy.
no subject
no subject
Вот только нормальный современный GUI с динамическим обновлением и перерисовкой контролов написать нормально без секса в гамаке стоя почти нельзя. Вы наверное плохо представляете чего это такое.
Откройте в таск менеджере каком нибудь любой современный гуй и посчитайте количество потоков.
no subject
no subject
Но если у меня коммуникация с внешними софтами/устройствами, то даже логичнее вынести в отдельный поток прием/обработку. Мало того, очень часто сторонние API/SDK это тупо регламентируют, вот пример:
"void copyProgress(OmCopyProgress* progress)
Remarks
This can be called from another thread while the copy is in progress. Note that it may not count
linearly from one frame to the next because some tracks may be omitted if, for example, the media
contains embedded audio."
no subject
no subject
no subject
no subject
(no subject)
no subject
> прием/обработку.
Если обработка не трубет затратов проца -- то нафиг не нужно. А если требует -- то отдельный поток или отдельный процэсс -- разница существенная, и не в пользу потока.
Второе вообще не понял -- да, много дятлов используют трэды. И что?
no subject
> обновлением и перерисовкой контролов написать
>нормально без секса в гамаке стоя почти нельзя.
Подпишусь. Под всем предложэнием подпишусь! Современную GUI с динамическим хрентотам -- это по определению похожэ на секс стоя в гамаке!
И да, то, что некоторый им занимаются вовсю -- это как-то слабый аргумент, чтобы кидаться и срочно делать такжэ.