metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-01-22 10:36 pm

atof, strtod и локаль.

Внезапно: а вот как положено в коде на С конвертить строку в double, если мы точно знаем, что в строке десятичный разделитель ".", и точно знаем, что код будут запускать на системе с адовыми локалями, у которых разделитель "," типа русской, белорусской итд? В дотнете, как положено, есть функция с параметром для локали и инвариантная локаль InvariantCulture. А в олдскульно-кошерном C как? setlocale(LC_NUMERIC,"C"); чо-то не рекомендуют, говорят, не thread-safe.

[identity profile] fas-tm.livejournal.com 2012-01-23 10:59 am (UTC)(link)
В простейшем случае так и есть.
Но если у меня коммуникация с внешними софтами/устройствами, то даже логичнее вынести в отдельный поток прием/обработку. Мало того, очень часто сторонние 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."

[identity profile] thedeemon.livejournal.com 2012-01-23 11:20 am (UTC)(link)
Для общения с внешним миром и многопоточными библиотеками да, потоки нередко нужны. Я про "GUI с динамическим обновлением и перерисовкой контролов". Обновление и перерисовку обычно в одном гуевом потоке делают.

[identity profile] permea-kra.livejournal.com 2012-01-23 11:40 am (UTC)(link)
Тогда воркер надо выносить в отдельный поток. Особенно если предусмотренны длинные файловые операции. Только за то, что в ворде нельзя работать одновременно с сохранение промежуточного результата на медленную флешку хочется убить аффторов.

[identity profile] thedeemon.livejournal.com 2012-01-23 11:53 am (UTC)(link)
И я о том же. Воркер в отдельном потоке, отрисовка его состояния - в основном.

[identity profile] tzirechnoy.livejournal.com 2012-01-23 05:54 pm (UTC)(link)
Ну, вот в ворде трэдов явно не один. И что, помогло это тем индусам, которые его дизайнили?

[identity profile] thedeemon.livejournal.com 2012-01-23 06:34 pm (UTC)(link)
Дизайнили еще до индусов. Вон Спольски когда-то эксель делал.

[identity profile] tzirechnoy.livejournal.com 2012-01-23 05:53 pm (UTC)(link)
> то даже логичнее вынести в отдельный поток
> прием/обработку.

Если обработка не трубет затратов проца -- то нафиг не нужно. А если требует -- то отдельный поток или отдельный процэсс -- разница существенная, и не в пользу потока.

Второе вообще не понял -- да, много дятлов используют трэды. И что?