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] tzirechnoy.livejournal.com 2012-01-23 05:48 pm (UTC)(link)
>потом сиди организовывай IPC

Конечно, организовывай. А что, в трэдах оно без ITC делается? ORLY? И сколько секунд при этом проходит до разноса памяти в щепки?

[identity profile] thedeemon.livejournal.com 2012-01-23 06:31 pm (UTC)(link)
С разделяемой памятью да одним адресным пространством надо только синхронизацию аккуратно сделать, передача данных тривиальна. До разноса памяти - зависит от кривизны рук. Бывает и без разносов.

[identity profile] tzirechnoy.livejournal.com 2012-01-23 08:56 pm (UTC)(link)
Ну, а через pipe -- надо только передачу данных аккуратно сделать, синхронизацыя тривиальна.

При этом, кстати, сделать передачу данных в pipe так, чтобы она обычно работала, но иногда делала что-то не то -- достаточно нетривиально. Ну, в смысле, что это какие-то кондовые такие ошыбки, которых в нормальном случае будет видно быстро.
С трэдами -- всё, в общем-то, наоборот.