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

Вызывть метод одного потока из другого потока - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задано натуральное число N. Для каждого из чисел от 1 до N требуется найти количество его делителей http://www.cyberforum.ru/cpp-beginners/thread1115771.html
Задано натуральное число N. Для каждого из чисел от 1 до N требуется найти количество его делителей. Исходные данные число N от 1 до 1 млн Результат N чисел через пробел - количества...
C++ Есть n-значное число нужно сложить сложить все его цифры Как такое реализовать? http://www.cyberforum.ru/cpp-beginners/thread1115765.html
Вычислить количество отрицательных элементов массива C++
в одновременном массиве ,состоящем из n вещественных элементов ,1)вычислить количество отрицательных элементов массива 2)сумму модулей элементов массива,расположенных после минимального по модулю...
C++ Статический самовызов
Всем привет. Представьте такую ситуацию: У меня в программе есть статический класс connections, который хранит коллекцию элементов типа connection. В некоторой функции класса connection возможна...
C++ Cin cout http://www.cyberforum.ru/cpp-beginners/thread1115722.html
записать через сin cout printf ("a=", i); scanf ("%f", &a);
C++ CGI и C++ какие книги есть по этой теме,и вообще зачем с++ для веб,и как к всему этому может относиться json?? подробнее

Показать сообщение отдельно
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
11.03.2014, 16:43  [ТС]
mustimur, хорошо конкретизирую, попробую просто
есть окно, есть основной цикл, который обновляет это окно,
в окне есть кнопки, на кнопки вешают обработчики,
по мимо всего этого использую boost::asio, кто ее использовал знают про метод boost::asio::io_service::run

так вот например есть кнопка подключиться к серверу
по ее нажатию вызывается обработчик(метод) который создает обьект класса отвечающий за подключения
на этом обьекте я async_connect и передаю туда снова обработчик

псевдокод

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
handle_server(AsyncTCPClient* client) {
  
   client->getState();
   ....
 
   ... 
}
 
 
handle_event_connect {
   AsyncTCPClient * client;
   client->async_connect(....., std::bind(handle_server, cclient));
}
обработчик вызывается и смотрим текущее состояние, в зависимости от состояния выбираем дальнейшие действия

например, удалось подключиться
теперь я вешаю обработчик на кнопку которая отвечает за получение данных, когда я ее нажимаю, я снова передаю фукнцию которую нужно будет вызвать внутри AsyncTCPClient когда тот получит или нет данные, но сервер может долго обрабатывать и зависнет все на методе run, но мне не нужно чтобы обработка главного окна замирала, по этому я внутри AsyncTCPClient создавал новый поток, в который замирал на методе run, а теперь хочу чтобы когда этот(второй поток) завершит свою работу вызвал метод(обработчик который ему передали) только в контексте первого потока,

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