| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [boost::thread] Параллельность выполнения |
| Автор: borisbn 15.10.2011, 10:15 | ||||
| Добрый день. Набросал наипростейшую программку с сабжем и ... не работает ( памагите
вывод
http://liveworkspace.org/code/753152e3115e9af41788468135f2c606 Почему не в перемешку ? Пробовал не 42 раза добавлять, а 500 - рез-т тот же. Спасибо. |
| Автор: azesmcar 15.10.2011, 10:48 | ||
| borisbn Во первых элементов слишком мало (даже 500-а может не хватить), чтобы что-то почувствовать, скорее всего первый поток уже завершен, когда второй начинает работать. Во вторых это зависит и от планировщика задач, возможно поток просто не получает управление. Поставь барьер на входе и добавь boost::this_thread::yield().
http://liveworkspace.org/code/f6daba84b38a1328a15813f0a0499dca |
| Автор: borisbn 15.10.2011, 11:31 |
о! точно. сработало. спасибо. а вот это не понял зачем... убрал - работает так же, как и без него. |
| Автор: azesmcar 15.10.2011, 12:56 |
На всякий случай, чтобы потоки дождались друг друга. |
| Автор: ecspertiza 15.10.2011, 16:39 | ||
Я может что то из буста подзабыл, но на мой взгляд проблема в
ты сначала дожидаешься выполнения одного потока потом второго, вот они по очереди и работают. |
| Автор: math64 15.10.2011, 19:15 |
| Нет, не в этом - без yield(); никто не хочет отдавать процессор, кто его забрал - тот и работает. На двухядерной машине потоки могли бы работать действительно одновременно. |