java.util.concurrent по сравнению с библиотекой Boost Threads

При использовании платформы как django платформа может легко сделать это для Вас использующий стандартные фильтры. На самом деле я - вполне уверенный django, автоматически делает это, если Вы не говорите его не.

Иначе, я рекомендовал бы использовать своего рода regex проверку прежде, чем принять исходные данные от форм. Я не думаю, что существует серебряная пуля для Вашей проблемы, но использование модуля ре, необходимо быть в состоянии создать то, в чем Вы нуждаетесь.

11
задан user151019 29 May 2012 в 12:25
поделиться

5 ответов

Потоки Boost намного проще в использовании, чем потоки pthread, и, на мой взгляд, немного проще в использовании, чем потоки Java. Когда создается объект потока ускорения, он запускает новый поток. Пользователь предоставляет функцию или функциональный объект, который будет выполняться в этом новом потоке.

Это действительно так просто, как:

boost::thread* thr = new boost::thread(MyFunc());
thr->join();

Вы можете легко передавать данные в поток, сохраняя значения внутри объекта функции. А в последней версии boost вы можете передать переменное количество аргументов самому конструктору потока, которые затем будут переданы оператору () вашего функционального объекта.

Вы также можете использовать RAII- стиль блокировки с помощью boost :: mutex для синхронизации.

Обратите внимание, что C ++ 0x будет использовать тот же синтаксис для std :: thread .

11
ответ дан 3 December 2019 в 02:02
поделиться

Performance wise I wouldn't really worry. It is my gut feeling that a boost/c++ expert could write faster code than a java expert. But any advantages would have to fought for.

I prefer Boost's design paradigms to Java's. Java is OO all the way, where Boost/C++ allows for OO if you like but uses the most useful paradigm for the problem at hand. In particular I love RAII when dealing with locks. Java handles memory management beautifully, but sometimes it feels like the rest of the programmers' resources get shafted: file handles, mutexes, DB, sockets, etc.

Java's concurrent library is more extensive than Boost's. Thread pools, concurrent containers, atomics, etc. But the core primitives are on par with each other, threads, mutexes, condition variables.

So for performance I'd say it's a wash. If you need lots of high level concurrent library support Java wins. If you prefer paradigm freedom C++.

7
ответ дан 3 December 2019 в 02:02
поделиться

Если вы ориентируетесь на конкретную платформу, прямой вызов ОС, вероятно, будет немного быстрее, чем использование ускорения для C ++. Я бы предпочел использовать ACE, поскольку вы, как правило, можете делать правильные вызовы для своей основной платформы, и она все равно будет независимой от платформы. Скорость Java должна быть примерно такой же, если вы можете гарантировать, что она будет работать на последней версии.

1
ответ дан 3 December 2019 в 02:02
поделиться

Обычно вы должны вызывать glGetError после каждого второго gl ... вызов, поскольку одним из эффектов вызова является очистка ошибки из стека ( из MSDN ):

Когда возникает ошибка, флаг ошибки устанавливается на соответствующее значение кода ошибки. Никакие другие ошибки не записываются до тех пор, пока не будет вызван glGetError, код ошибки будет возвращен, а флаг сброшен на GL_NO_ERROR.

Однако, если у вас есть вызовы, заключенные в glBegin и glEnd вызовите glError после glEnd . Это должно вернуть вам правильный код ошибки (если она есть) и очистить стек ошибок.

  • Атомарные операции.
  • Примечание: в C ++ в настоящее время нет модели памяти. На другом компьютере одно и то же приложение C ++ может иметь дело с другой моделью памяти. Это делает переносимое параллельное программирование на C ++ еще более сложным.

    12
    ответ дан 3 December 2019 в 02:02
    поделиться

    В C ++ при желании можно напрямую использовать pthreads (pthread_create () и т. Д.). Внутренне Java использует потоки pthreads через среду выполнения. Сделайте «ldd», чтобы увидеть.

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

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