Помогите понять boost::thread |
Здравствуйте, гость ( Вход | Регистрация )
Помогите понять boost::thread |
igor_bogomolov |
27.7.2009, 22:58
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Всем привет.
Начал потихоньку осваивать boost. Возникло несколько вопросов. Имею примерно такой код MSK.h
MSK.cpp
main
В результате получаю: Цитата PnP run... message1 \ message2 | Эти сообщения я получаю только через 10 секунд message3 | т.е. основной поток получается заблоктрованным message4 / PnP run... PnP run... PnP run... PnP run... и т.д.... 1) Где и что я делаю не правильно. Почему блокируется основной поток? Или это просто доступ к самой консоли блокируется? 2) Как нормально приостановить поток средствами boost, не привязываясь к системному времени. 3) Что делать если RoutinePnP у меня не может быть статической? Есть ли возможность передать в поток не статический метод класса? Или тут единственный вариант - создавать глобальный метод и делать его дружественным для класса MSK? -------------------------------------------- 4) (не по теме) Где то читал что в boost есть аналог Q_PROPERTY(...), что то не могу найти. ((( |
|
|
Andrew Selivanov |
28.7.2009, 15:44
Сообщение
#2
|
Участник Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: 6 |
Я бы рекомендовал для начала изучить неплохие примеры из Thread: C:\boost\boost_1_37_0\libs\thread\example\
На третий вопрос отвечу кодом из примера про голодных философов (starvephil.cpp):
Привязываем потоки к конкретным объектам через thread_adapter и делаем join (join грубо говоря обозначает не убивать этот поток пока не завершаться присоединённые к нему потоки, у тебя эту роль играет вечный sleep())
Цитата 2) Как нормально приостановить поток средствами boost, не привязываясь к системному времени. Насколько я помню никак Цитата 1) Где и что я делаю не правильно. Почему блокируется основной поток? Или это просто доступ к самой консоли блокируется? MinGW 3.4.5/Boost 1.37 Ничего нигде не блокируется. Я обычно что то в этом духе делаю:
|
|
|
Текстовая версия | Сейчас: 25.11.2024, 11:06 |