Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355

Еще раз о передаче данных между потоками

20.10.2015, 18:16. Показов 1901. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Собираюсь организовать сабж. Общение потоков будет односторонним. Главный поток время от времени принимает от порожденных им потоков данные в виде пары указателей. Как насчет того, чтобы создать в главном потоке окно и ждать какой-нибудь WM_USER+1, где WParam и LParam будут теми самыми указателями? В таком случае не надо будет наводить синхронизацию и заморачиваться с выделением и очисткой памяти под указатели. Эффективен ли такой вариант на ваш взгляд, если учесть, что приложение консольное и окно больше ни для чего не нужно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2015, 18:16
Ответы с готовыми решениями:

Передача данных между потоками
Есть сервер. Для каждого клиента он создает новый поток и работает с ними независимо от остальных...Например мне надо чтобы получив...

Передача данных между потоками
Всем доброго времени суток. В общем есть приложение, которое парсит сайт с музыкой, добавляет результат в listView и затем выводит...

Передача данных между потоками
Подскажите пожалуйста как передать объект между потоками через сигнал-слот? у меня выдает следующее сообщение ASSERT failure in...

5
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
20.10.2015, 18:55
Цитата Сообщение от mytilus Посмотреть сообщение
Главный поток время от времени принимает от порожденных им потоков данные в виде пары указателей.
Поток, посылающий сообщения, все равно должен знать, что они обработаны и только после этого слать новые, иначе вся логика работы нарушится. Без обратной связи и синхронизации все равно не получиться, imho. Опишите какую задачу нужно решить.
0
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
20.10.2015, 23:53  [ТС]
На самом деле, потокам все равно, когда и как будут обработаны их данные. Они бы отпраляли сообщение главному потоку (ГП) через PostMessage и продолжали бы свою работу не дожидаясь никакого ответа. ГП на основе полученных данных должен выводить в консоль некие сведения. Их порядок для пользователя не имеет значения. Поэтому я и подумал: пусть ГП ждет очередное сообщение, формирует строку, выводит ее и ждет следующее сообщение. А Винда уже берет на себя обязательства по созданию очереди, передаче параметров и т.п.
0
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
21.10.2015, 09:14
Схема рабочая, делал что-то подобное при обновлении списка иконок по мере их загрузки.
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
21.10.2015, 14:26
Цитата Сообщение от mytilus Посмотреть сообщение
Как насчет того, чтобы создать в главном потоке окно и ждать какой-нибудь WM_USER+1, где WParam и LParam будут теми самыми указателями? В таком случае не надо будет наводить синхронизацию и заморачиваться с выделением и очисткой памяти под указатели.
Только не WM_USER+N, а WM_APP+N. Потому что WM_USER может
использоваться некоторыми оконными классами.

Цитата Сообщение от mytilus Посмотреть сообщение
В таком случае не надо будет наводить синхронизацию и заморачиваться с выделением и очисткой памяти под указатели.
Заморачиваться с выделением и очисткой памяти таки придется, если
потоки будут использовать PostMessage.
1
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
21.10.2015, 15:13  [ТС]
Убежденный, за WM_APP - спасибо! Без подсказки не вспомнил бы про него. В принципе можно даже подтянуть себе в помощь RegisterWindowMessage, дабы наверняка избежать коллизий.
Насчет выделения памяти - тут оно не нужно. Поток отправляет два указателя, оба на константы. Или я что-то упустил насчет памяти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2015, 15:13
Помогаю со студенческими работами здесь

Обмен данных между потоками
Имеется 2 потока (основной и рабочий) В рабочем потоке появляется строка, которая должна передаваться в основной поток, где выполняются...

Передача данных между потоками
Изучаю многопоточные приложения. Есть 2 потока, в основном окне есть поле ввода, надо как-то передать информацию из поля во второй поток....

Разделение данных между потоками (теория)
Помогите понять что такое разделение данных между потоками. Изучаю статью "Работа с потоками C#" Вот код: class ThreadTest { ...

Передача данных между потоками/процессами
Ребят, у вас тут поактивнее раздел. В соседней ветке .NET я не нашел решения, может java-программисты знают как лучше сделать. Суть...

Безопасная передача данных между потоками
У меня есть два класса (описаны в разных файлах). В классе1 есть массив, который я хочу передать классу2 для изменения. Для этого я вызываю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru