Как сохранить C++ возражают в XML-файл и восстановить назад?

Я должен сказать, я думаю, что другие два ответа в настоящее время имеют слишком низкое мнение о классах параллелизма Java. Они не дадут вам миллисекундную точность (чего ожидают «реальные» приложения реального времени), но обычно они работают достаточно хорошо. Я написал крупномасштабные коммерческие сервисы с использованием Futures и Executors, и они обычно работали в течение 10 миллисекунд ожидаемого времени, даже под нагрузкой.

Я провел этот тест как на MacOS 10.6 с Java 1.6, так и на WinXP с Java 1.6.0_22, и оба они работают как положено.

Я изменил код следующим образом, чтобы проверить точность:

    long time1 = System.nanoTime();

    System.out.println("Submitting");
    final Future<Object> future = exec.submit(call);
    try {
        future.get(1000, TimeUnit.MILLISECONDS);

        long time2 = System.nanoTime();
        System.out.println("No timeout after " + 
                             (time2-time1)/1000000000.0 + " seconds");

        fail("expected TimeoutException");
    } catch (TimeoutException ignore) {
        long time2 = System.nanoTime();
        System.out.println("Timed out after " +
                             (time2-time1)/1000000000.0 + " seconds");
    }
    finally {
        exec.shutdown();
    }

В XP это печатает «по истечении 1,002598934 секунд», а в MacOS X печатает «по истечении 1,003158 секунд». ]

Если бы оригинальный постер описывал их ОС и версию JDK, возможно, мы могли бы определить, является ли это конкретной ошибкой.

5
задан MSalters 10 June 2009 в 14:34
поделиться

4 ответа

Boost.Serialization и libs11n могут это сделать. В руководстве libs11n (доступном здесь ) есть подробное сравнение этих двух.

Как сказал Тобиас, FAQ по C ++ содержит хорошую справочную информацию.

12
ответ дан 18 December 2019 в 06:23
поделиться

Библиотека сериализации Boost может реализовывать многие функции, которые вы ищете.

7
ответ дан 18 December 2019 в 06:23
поделиться

Сериализация - сложная тема, которая, вероятно, слишком сложна для простого ответа на SO. К сожалению, с C ++ вы не получите его бесплатно, как в других языках.

Для начала см. C ++ faq lite или boost .

6
ответ дан 18 December 2019 в 06:23
поделиться

Я не знаю, есть ли какой-либо прямой способ добиться этого. Вы можете написать отдельные методы для сериализации и десериализации методов, в которых отдельные элементы данных объекта должны быть записаны и извлечены из файла.

0
ответ дан 18 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: