В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x.
Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
Здравствуйте, sharcUs, Вы писали:
U>В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x. U>Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
"Выполнение функции объекта в другом потоке" — несколько угловатый перевод. В данном случае правильнее было бы: "Выполнение функционального объекта в другом потоке"
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, sharcUs, Вы писали:
U>>В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x. U>>Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
R>"Выполнение функции объекта в другом потоке" — несколько угловатый перевод. В данном случае правильнее было бы: "Выполнение функционального объекта в другом потоке"
Не согласен. Литературно может и верно. А вот технически что-то мне кажется что не очень. (не помню никаких функциональных объектов в с++, хотя ща статью почитаю)
Здравствуйте, sharcUs, Вы писали:
U>В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x. U>Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
А что там насчет сигнализации из одного потока в другой ? mutex и lock — это замечательно, а где event ?
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, sharcUs, Вы писали:
U>>В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x. U>>Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
R>"Выполнение функции объекта в другом потоке" — несколько угловатый перевод. В данном случае правильнее было бы: "Выполнение функционального объекта в другом потоке"
хотя почитал в чем дело. думаю вы правы
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А что там насчет сигнализации из одного потока в другой ? mutex и lock — это замечательно, а где event ?
это уже тема для другой статьи, так же как и условные переменные.
Если интересно, можно тут все посмотреть и потрогать.
В частности для того что бы подружить два потока можно использовать std::unique_future и std::promise.
Первый из них ожидает результат, а другое сигнализирует о том что закончил работу.
основные компоненты библиотеки
std::thread class for launching and managing threads.
Mutex classes (std::mutex, std::timed_mutex, etc.) for protecting shared data.
Condition variables (std::condition_variable and std::condition_variable_any) for synchronizing operations.
Atomic types (std::atomic_int, std::atomic_long, etc.) for low level atomic access.
Futures and promises (std::unique_future, std::promise, etc.) for communicating data between threads.
Заявлена поддержка:
Compatible with Microsoft Visual Studio 2008 and Microsoft Visual C++ Express 2008 for 32-bit Windows targets.
Compatible with g++ 4.3 for 32-bit and 64-bit Ubuntu linux targets, making full use of the C++0x support from g++ including rvalue references and variadic templates.
Здравствуйте, sharcUs, Вы писали:
U>основные компоненты библиотеки U>
U>Mutex classes (std::mutex, std::timed_mutex, etc.) for protecting shared data. U>Condition variables (std::condition_variable and std::condition_variable_any) for synchronizing operations. U>Atomic types (std::atomic_int, std::atomic_long, etc.) for low level atomic access. U>
Вопрос на засыпку: а как синхронизировать операции (перевод "for synchronizing operations") реализованные с помощью std::atomic<>?
Здравствуйте, sharcUs, Вы писали:
U>Здесь полная онлайн документация по библиотеке
Спасибо. Посмотрел.
Господа, а кто как думает — это привьется или нет ? В сущности, все это давно есть в Win32, только это не С++, а С и не кроссплатформенно. Но в общем, для Windows все эти вещи давно реализованы и окружены различными классами. Если оставить в стороне кроссплатформенность — что я получу от перехода на это ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, sharcUs, Вы писали:
U>>Здесь полная онлайн документация по библиотеке
PD>Спасибо. Посмотрел.
PD>Господа, а кто как думает — это привьется или нет ? В сущности, все это давно есть в Win32, только это не С++, а С и не кроссплатформенно. Но в общем, для Windows все эти вещи давно реализованы и окружены различными классами. Если оставить в стороне кроссплатформенность — что я получу от перехода на это ?
а у меня вопрос. эт разве не boost::thread в неймспейсе std:: ?
Здравствуйте, sharcUs, Вы писали:
U>В октябрьском номере Overload напечатана статья Энтони Уильямса о новых многопоточных возможностях стандартной библиотеки. Статья называется Multi-threading in C++0x. U>Кому интересно, рад представить свой авторский перевод: Многопоточность в C++0x
читал перевод до слов
без скобок объявление представляет собой вызов функции t, которая принимает указатель на функцию без параметров и возвращающей экземпляр SayHello, и который возвращает объект std::thread, а не объект t типа std::thread.
на выделенном мой встроенный С++ный парсер дал сбой... и я пошел убедиться что аффтар оригинала всятки понимает о чем пишет...
the declaration is taken to be a declaration of a function called t which takes a pointer-to-a-function-with-no-parameters-returning-an-instance-of-SayHello, and which returns astd::threadobject, rather than an object called t of type std::thread.
это переводится как (не литературно):
распарсенное объявление представляет из себя объявление функции t принимающей указатель на функцию без параметров возвращающую экземпляр SayHello...
... пойду дочитывать оригинальную статью... хотя видима ничего нового там нет... дока о boost::thread пропайпенная через `sed 's,boost::,std::,g'` -- оно и понятно...