Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653

boost::thread объясните нубу

16.11.2012, 23:05. Показов 2158. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код

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
#include <boost/thread/thread.hpp>
#include <iostream>
#include <windows.h>
using namespace std; 
 
void hello_world() 
{
  cout << "thread!" << endl;
  Sleep(5000);
}
void hello()
{
    cout << "hello" << endl;
}
 
int main() 
{
  boost::thread my_thread(&hello_world);
  boost::thread my_thread2(&hello);
  my_thread.join();
  my_thread2.join();
  boost::thread my_thread3(&hello);
 getchar();
  return 0;
}
при каждом запуске вывод не очевиден, то есть он может быть и
hello
thread!
и
thread!
hello
и
hellothread!
и
thread!hello
Чем программа руководствуется?..)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2012, 23:05
Ответы с готовыми решениями:

Объясните нубу про распараллеливание вычислений. thread
я попытался цикл разбить пополам на 2 потока, по идее скорость должна увеличиться в 2 раза, но, что мы видим... без потоков #include...

Boost thread
Здравствуйте! Помогите разобраться пожалуйста. Задача будет заключаться в том чтобы, создать поток и передать туда функцию и параметр,...

boost::thread
Здравствуйте. Есть два класса. Членом первого из классов является объект второго класса. В первом классе есть метод, в котором я хочу...

4
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.11.2012, 00:16
Я не знаю эту либу, но вероятно что программа руководствуется тем что потоки выполняются "параллельно"
т.е. потоки выполняются так как им ОС распределит время...
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
17.11.2012, 00:49
Лучший ответ Сообщение было отмечено как решение

Решение

NeonLost, Синхронизация где? cout - глобальный ресурс.

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
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
#include <windows.h>
using namespace std;
 
void hello_world(boost::mutex& mutex) 
{
  {
  boost::lock_guard<boost::mutex> lock(mutex);
  cout << "thread!" << endl;
  }
  boost::this_thread::sleep(boost::posix_time::seconds(5));
}
 
void hello(boost::mutex& mutex)
{
    boost::lock_guard<boost::mutex> lock(mutex);
    cout << "hello" << endl;
}
 
int main() 
{
  boost::mutex io_mutex;
  boost::thread my_thread(boost::bind(&hello_world, boost::ref(io_mutex)));
  boost::thread my_thread2(boost::bind(&hello, boost::ref(io_mutex)));
  my_thread.join();
  my_thread2.join();
  boost::thread my_thread3(boost::bind(&hello, boost::ref(io_mutex)));
  my_thread3.join();
  getchar();
  return 0;
}
4
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
17.11.2012, 09:40  [ТС]
Воот, синхронизация это-то слово, которое я ждал...)

Добавлено через 8 часов 41 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
NeonLost, Синхронизация где? cout - глобальный ресурс.

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
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
#include <windows.h>
using namespace std;
 
void hello_world(boost::mutex& mutex) 
{
  {
  boost::lock_guard<boost::mutex> lock(mutex);
  cout << "thread!" << endl;
  }
  boost::this_thread::sleep(boost::posix_time::seconds(5));
}
 
void hello(boost::mutex& mutex)
{
    boost::lock_guard<boost::mutex> lock(mutex);
    cout << "hello" << endl;
}
 
int main() 
{
  boost::mutex io_mutex;
  boost::thread my_thread(boost::bind(&hello_world, boost::ref(io_mutex)));
  boost::thread my_thread2(boost::bind(&hello, boost::ref(io_mutex)));
  my_thread.join();
  my_thread2.join();
  boost::thread my_thread3(boost::bind(&hello, boost::ref(io_mutex)));
  my_thread3.join();
  getchar();
  return 0;
}
она кстати все равно меняет их местами(
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
17.11.2012, 14:38
NeonLost, И будет менять. Потоки запускаются как и говорил Avazart.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2012, 14:38
Помогаю со студенческими работами здесь

queue boost thread
#define BOOST_THREAD_VERSION 2 #include &lt;boost/thread/thread.hpp&gt; #include &lt;boost/thread/xtime.hpp&gt; #include &lt;iostream&gt; #include...

Не линкуется проект с boost::thread
Здравствуйте! Пытаюсь собрать проект в Code::Blocks на Ubuntu. В проекте используется библиотека boost::thread. Файл...

boost::thread синхронизация с VCL
Здравствуйте, подскажите, как работать с VCL компонентами из boost::thread потока

Исключения в потоке Boost::thread
Имеется функция, которая вызывается в потоке. Внутри функции есть try-catch. Вне потока, если функцию вызывать из main(), исключения...

boost::thread() проблема с потоками.
Собственно создается два потока и запускаются следующим образом int main(). { thread1.join(); thread2.join(); ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru