crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Синхронизация потоков
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Iron Bug Дата 12.4.2012, 8:56
 
Цитата(Гость_Гость_Алексей_*_* @ 12.4.2012, 1:37) *
как не напишу всё время от тебя ответы идут

просто мало кто с бустом тут общается плотно. а я его уже много лет юзаю успешно.

барьеры и сигналы особо тормозить не должны, но это смотря куда их лепить, конечно.
самая быстрая синхронизация, по моим расчётам, это условные переменные. для меня время реакции системы очень критично, поэтому я проводила тесты на скорость методов синхронизации.
Гость_Алексей_* Дата 11.4.2012, 22:37
  В общем если кому интересно(что вряд ли) сделал через boost::barrier и
boost::signal0 для вызова из основного кода события перерисовки... всё начало работать... но тупить страшно..) мож гдето и накасячил когда изврашялься с glut....

в общем понял что и даже для дебага такое извращение обработки событий не очень подходит..
Нашел альтернативу glut в которой система не вешается по вызову функции.... инсталлировать окно через SDL там обработка событий идет в цикле как на winApi.... и можно обрабатывать всё это в io_service..


Iron Bug, спасибо за помощь, как не напишу всё время от тебя ответы идут... :)
Гость_Алексей_* Дата 11.4.2012, 8:54
  У меня окно создаться на glut для дебага объектов из основного(оно показывает положения, пересечения и тп..)
у glut последняя функция блочит поток.. и начинается обработка событий glut.

в общем в release glut не будет.. прога консольная... работает через сетку... поэтому таймеры и т.п. работают через io_service boost

ну и естественно при дебаге функция рисования и изменения данных не должны отрабатываться параллельно

в общем такая история)
Спасибо почитаю...
Iron Bug Дата 11.4.2012, 8:36
  есть у буста в документации по boost::thread раздел синхронизация потоков. это базовая документация по всем видам синхронизации в бусте (для потоков).

в данном случае ты можешь применить условные переменные (condition variables) или барьеры (barriers). барьеры проще(тут их вполне достаточно будет), условные переменные - универсальней.

но вообще, какой смысл запускать функцию в отдельном потоке, если ты всё равно ждёшь её завершения? тут какая-то чисто логическая ошибка. либо ты что-то недопонял, либо не так сформулировал.
обычно потоки используются для параллельного выполнения задач.
Гость_Алексей_* Дата 11.4.2012, 0:52
  В общем задача в том чтоб
Запустить функцию из главного потока, которая находиться в дочернем потоке(ну дочерний поток естественно создан на boost)...
подождать пока она выполниться(в дочернем потоке) и продолжить работу...

я в многозадачность некогда не лез раньше... но походу пора уже..
читал про mutex но хз.. на сколько оно подойдет здесь


Код не прошу.. прост укажите куда копать пожалуст.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 17:35