Форум программистов, компьютерный форум, киберфорум
Наши страницы

Boost C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
#1

потоки в c++ на boost - Boost C++

27.04.2013, 22:08. Просмотров 2207. Ответов 6
Метки нет (Все метки)

Доброго времени суток. Хочу задать пару вопросов по потокам.

1. Потоки могут обмениваться сообщениями, а скажите вот есть 2 потока: А и Б, пока А выполняется, другой должен подождать пока A передаст ему сообщение и начнёт работать вместе с потоком Б. Возможно ли такое?

2. Банальный вопрос, я дорожу скоростью, оооочень важный параметр, потоки boost работают быстро? или есть что быстрей?

3. Вот я нашёл пример с потоками он не работает и жутко матюкается на саму библиотеку boost, вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <boost/thread.hpp>
 
class cClass
{
    public:
        cClass() {}
 
        void Start(int Seconds)
        {
            Thread = boost::thread(&cClass::ClassFunction, this, Seconds);
        }
 
        void join()
        {
            Thread.join();
        }
 
        void ClassFunction(int Delay)
        {
            printf("Thread: Hello!\n");
 
            boost::posix_time::seconds SleepTime(Delay);
            boost::this_thread::sleep(SleepTime);
 
            printf("Thread: Bye Bye!");
        }
 
    private:
        boost::thread Thread;
};
 
int main(int argc, char* argv[])
{
    cClass Class;
    Class.Start(2);
    Class.join();
    return 0;
}
Вот вся его ругань:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
||=== thread, Debug ===|
obj\Debug\main.o||In function `_static_initialization_and_destruction_0':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\system\error_code.hpp|214|undefined reference to `boost::system::generic_category()'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\system\error_code.hpp|215|undefined reference to `boost::system::generic_category()'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\system\error_code.hpp|216|undefined reference to `boost::system::system_category()'|
obj\Debug\main.o||In function `thread_exception':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\exceptions.hpp|51|undefined reference to `boost::system::system_category()'|
obj\Debug\main.o||In function `thread_data_base':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\win32\thread_data.hpp|123|undefined reference to `_imp___ZTVN5boost6detail16thread_data_baseE'|
obj\Debug\main.o:c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\win32\thread_data.hpp|255|undefined reference to `_imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'|
obj\Debug\main.o:c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|180|undefined reference to `_imp___ZN5boost6thread21start_thread_noexceptEv'|
obj\Debug\main.o||In function `~thread':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|255|undefined reference to `_imp___ZN5boost6thread6detachEv'|
obj\Debug\main.o:c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|746|undefined reference to `_imp___ZNK5boost6thread6get_idEv'|
obj\Debug\main.o:c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|746|undefined reference to `_imp___ZN5boost11this_thread6get_idEv'|
obj\Debug\main.o:c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|751|undefined reference to `_imp___ZN5boost6thread13join_noexceptEv'|
obj\Debug\main.o||In function `cClass':|
C:\CodeBlocks\thread\main.cpp|7|undefined reference to `_imp___ZN5boost6threadC1Ev'|
obj\Debug\main.o||In function `~thread_data':|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|93|undefined reference to `_imp___ZN5boost6detail16thread_data_baseD2Ev'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\thread\detail\thread.hpp|93|undefined reference to `_imp___ZN5boost6detail16thread_data_baseD2Ev'|
||=== Build finished: 14 errors, 0 warnings ===|

Помогите пожалуйста в этом всем разобраться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 22:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос потоки в c++ на boost (Boost C++):

Boost thread pool. Как остановить потоки? - Boost C++
Привет. Реализовал thread pool с помощью boost::thread_group и boost::asio::io_service for (unsigned int i = 0; i &lt;...

Boost начало работы: Undefined reference to `boost::system::generic_category() ' - Boost C++
Добрый день Собственно говоря возникла необходимость использовать boost в работе. Поставил так: sudo apt-get install boostlib-all-dev ...

Boost Log - undefined reference to `boost::system::system_category()' - Boost C++
Пытаюсь скомпилировать код из примеров Boost Log:#include &lt;boost/log/trivial.hpp&gt; int main(int, char*) { ...

использование boost и boost.build с несколькими компиляторами - Boost C++
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов: MinGW 4.5.2 и Visual C++ 2010 Express Edition. Для этого...

Метапрограммирование в boost::proto (boost::spirit) - Boost C++
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt; const _1; ...

Qt и boost boost::system::generic_category() - Boost C++
Добрый день Не подскажите как настроить Qt на работу с boost? У меня в принципе все работает: умные указатели и тд. Но когда...

6
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,544
Завершенные тесты: 3
27.04.2013, 23:38 #2
1) condition_variable?
2) boost::thread по сути не более чем удобная обертка над С-функциями (pthread etc). Нативные потоки скорее всего будут работать быстрее (хотя что-то сложное не факт, что реализуете лучше чем в бусте).
3) Ошибки линковки. Не прилинкованы: boost_system, boost_thread
1
Dmitriy_M
1360 / 1243 / 114
Регистрация: 20.03.2009
Сообщений: 4,449
Записей в блоге: 11
28.04.2013, 00:57 #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Нативные потоки скорее всего будут работать быстрее (хотя что-то сложное не факт, что реализуете лучше чем в бусте).
Тот же pthread это обертка над системными вызовами конкретного ядра.
1
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
28.04.2013, 11:21  [ТС] #4
ForEveR, вот который раз мне пишут о линковке, где можно про это почитать? Где можно найти и почитать как работать с компиляторами? Я допустим не знаю как прилинковать, нашёл вот это:
C
1
-L /path/to/boost/libraries
Где, как и что без понятия, понятно что это параметры для компилятора, но как их настроить?

Добавлено через 58 секунд
P.S. У меня в папке boost нет папки libraries

Добавлено через 6 минут
Нашёл в архиве папку libs, но там в основном примеры и документация.((( IDE у меня Code::Blocks

Добавлено через 2 минуты
Захожу я Build Options/Linker Setting и в поле Link libraries, ввожу -L /path/to/boost/libraries, теперь осталось добыть эту библиотеку, и понять куда её разместить нужно.

Добавлено через 5 минут
ох... я только щас понял что нужно правильно установить boost,
http://www.boost.org/doc/libs/1_53_0/doc/html/bbv2/installation.html

Добавлено через 23 минуты
читал читал, особо не понял что просят сделать.
1. Извлёк архив в C:\Program Files (x86)\CodeBlocks\MinGW
Все важные файлы boost находятся в C:\Program Files (x86)\CodeBlocks\MinGW\boost_1_53_0\

2. Я запустил файл C:\Program Files (x86)\CodeBlocks\MinGW\boost_1_53_0\bootstrap.bat

Что дальше нужно сделать? Ничего не понимаю(((( Что и как должен сделать этот файл.
Например как библиотеки boost попадут в папку inlude у компилятора? Откуда он узнает куда нужно их переместить? .bat это команды cmd, посмотрел я этот файл, он работает с неким движком. Обьясните это все кто нибудь! Пожалуйста!
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.04.2013, 11:39 #5
Цитата Сообщение от No10 Посмотреть сообщение
Обьясните это все кто нибудь! Пожалуйста!
слишком громко придется кричать долго придется объяснять.
вот step by step
Цитата Сообщение от No10 Посмотреть сообщение
Например как библиотеки boost попадут в папку inlude у компилятора? Откуда он узнает куда нужно их переместить
им необязательно попадать в папку компилятора, достаточно при компиляции указать в опциях откуда подцепить инклюды и либы.
Кликните здесь для просмотра всего текста
но если все же горит добавить в папку компилятора то в пункте 7
--libdir=C:/Boost152/lib ^
--includedir=C:/Boost152/include ^
подставь пути компилятора, но имхо так делать не стоит
1
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
28.04.2013, 19:01  [ТС] #6
Мда, остановился на этом пункте:
3. Запустить файл:

C:\boost_1_52_0\boost_1_52_0\tools\build\v2\engine\build.bat

в результате в папке C:\boost_1_52_0\boost_1_52_0\tools\build\v2\engine\bin.ntx86 будет

собран bjam.exe
Ничего не компилируется, просто ничего не происходит. так профессионально командную строку не знаю что бы файл разобрать((
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.04.2013, 21:58 #7
Цитата Сообщение от No10 Посмотреть сообщение
Ничего не компилируется, просто ничего не происходит. так профессионально командную строку не знаю что бы файл разобрать((
файл bjam.exe появился?
0
28.04.2013, 21:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 21:58
Привет! Вот еще темы с ответами:

boost::geometry::model::box и boost::geometry::area - Boost C++
Здравствуйте! Пытаюсь измерить площадь box'a :D, но не знаю как правильно это сделать. Вот этот код при компиляции выдает кучу ошибок: ...

Qt и boost - Boost C++
Как правильно прикрутить boost к Qt Creator? Можно ли использовать уже установленный boost для Visual Studio (через инсталятор)? Как...

Boost Asio C++ - Boost C++
Добрый день. Юзаю этот ( http://www.boost.org/ ) проект. Нужна помощь с документаций...

Собрать boost - Boost C++
скачал буст, распаковал,запускаю bootstrap, в логе получаю следующее: command.c compile.c constants.c debug.c execnt.c ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru