|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||||||
Уведомления между потоками29.07.2015, 11:35. Показов 4289. Ответов 24
Метки нет (Все метки)
Здравствуйте!
Набросал код для экспериментов:
0
|
||||||
| 29.07.2015, 11:35 | |
|
Ответы с готовыми решениями:
24
Передача данных между потоками Обмен данными через указатель между потоками
|
|
|
||||||
| 29.07.2015, 12:03 | ||||||
|
Используйте условные переменные. На вашем псевдокоде и по одному потоку для блока и сервиса код будет выглядеть вот так:
0
|
||||||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
| 29.07.2015, 12:06 | |
|
Ну это не по языку вопрос а по платформе, для которой этот код предназначен.
0
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||||||
| 29.07.2015, 12:23 [ТС] | ||||||
Ошибка C3493 "strukt_1" нельзя передать неявно, поскольку не задан режим передачи по умолчанию Win32Project1 c:\users\admin1\documents\visual studio 2015\projects\win32project1\win32project 1\блок_.cpp 37 Ошибка IntelliSense: на локальную переменную со вложенной функцией нельзя ссылаться внутри тела лямбды, если она не находится в списке записей Win32Project1 c:\Users\Admin1\Documents\Visual Studio 2015\Projects\Win32Project1\Win32Project 1\Блок_.cpp 37
0
|
||||||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
| 29.07.2015, 12:23 | |
|
0
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||
| 29.07.2015, 12:29 [ТС] | ||
|
0
|
||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|||
| 29.07.2015, 12:44 | |||
|
0
|
|||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||
| 29.07.2015, 12:53 [ТС] | ||
|
Добавлено через 1 минуту А можно послать уведомление одному из 10 потоков? а не всем сразу? например по его ID? Добавлено через 13 секунд А можно послать уведомление одному из 10 потоков? а не всем сразу? например по его ID?
0
|
||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||
| 29.07.2015, 13:01 | ||||
|
0
|
||||
|
|
|||
| 29.07.2015, 13:02 | |||
|
Более того если пользоваться циклом переменная должна быть атомарна, либо необходимо заводить мъютекс для защиты флага. Что бы разбудить конкретный поток заведите для него отдельную условную переменную, ибо стандарт не дает никаких гарантий относительно того какой поток будет разбужен функцией notify_one().
0
|
|||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 29.07.2015, 13:09 [ТС] | |
|
У меня так и реализовано сейчас, но только проверка в цикле этих переменных. Вот я и подумал от них избавится.
Добавлено через 4 минуты Я правильно понял что сделав массив перименных функцией notify_one() разбудится только тот поток где ожидается изменение именно той переменной? например так: cv.wait(lk, [=]() { return (*strukt_1)[1].a == 0;}); Добавлено через 55 секунд а потоки где идет проверка:cv.wait(lk, [=]() { return (*strukt_1)[2].a == 0;}); не будут просыпаться?
0
|
|
|
|
|||||||||||
| 29.07.2015, 13:13 | |||||||||||
|
eagl69, не правильно поняли. Нужно создавать массив условных переменных
0
|
|||||||||||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|||||||||||
| 29.07.2015, 13:28 [ТС] | |||||||||||
|
А можно сделать так: в структуре создать std::condition_variable cv; а массив сделать из структуры.
Те хочу добиться чтобы каждой группе данных соответствовал свой condition_variable
0
|
|||||||||||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 29.07.2015, 13:43 [ТС] | |
|
А чем плох вектор?
Добавлено через 1 минуту Дело в том что у меня в структуре данные разных типов....
0
|
|
|
|
||
| 29.07.2015, 13:54 | ||
|
0
|
||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 29.07.2015, 14:02 [ТС] | |
|
А чем тогда лучше пользоваться?
0
|
|
|
|
|
| 29.07.2015, 14:23 | |
|
0
|
|
| 29.07.2015, 14:23 | |
|
Помогаю со студенческими работами здесь
20
Взаимодействие между потоками Взаимодействие между потоками Интервал между потоками Связь между потоками Взаимодействие между потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|