![]() 60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
Работа с потоками12.07.2012, 20:47. Показов 1439. Ответов 11
Метки нет Все метки)
(
Пишу простой RSS агрегатор и уже практически доделал его
в программе параллельно устанавливается соединение и потом извлекаем данные из файлов когда я делал всё по отдельности(в одном проекте-запрос и запись в файл,в другом-чтение),то всё нормально в данном случае файлы не создаются и у меня есть подозрение,что из-за многопоточности я постарался код максимально закомментировать,чтоб было легче разобраться в нём
0
|
12.07.2012, 20:47 | |
Ответы с готовыми решениями:
11
Работа с потоками Работа с потоками. Работа с потоками |
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
|
|
13.07.2012, 09:47 | |
Если несколько потоков, а их три, обращаются к одному объекту на изменение данных (в parsing.cpp), то неизбежно будет возникать ошибка.
Используй в начале функции void parsing(PVOID pvoid) функцию WaitForSingleObject( hObjectMutex, INFINITE ); и в конце ReleaseMutex( hObjectMutex);
1
|
![]() 60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
13.07.2012, 14:46 [ТС] | |
я знаю про это,но ведь они обращаются к разным файлам,ни одна функция не разделяет переменных
да и к тому же файлы не создаются,значит проблема возникает ещё в функции connect Добавлено через 3 часа 5 минут попробовал и помогло,спасибо вам,но я так и не понял,какие данные разделялись между потоками
0
|
![]() 60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
||||||
13.07.2012, 17:12 [ТС] | ||||||
я добавил мьютексы пока лишь в функцию connect,файлы создаются,однако сохраняются не так,как надо.То есть,в файле apple_rss.xml вдруг новсти с kp.ua,то есть перемешалось всё
оказывается он использует один и тот же буфер и всё туда записывает,то есть с первым файлом всё нормально,а вот в случае со вторым и третьим беда-в них записыается содержимое предыдущих файлов вот на всякий случай код
Я исправил предыдущую ошибку,теперь борюсь с двумя:первая-разделение потоков,мне нужно,чтобы сначала завершились потоки для загрузки данных,а лишь потом запустились потоки для открытия файлов я использовал объект Event,однако возникла проблема,что один файл не открывается,то есть два уже есть,они открываются,а один какой-нибудь-нет Проблема №2:не выводятся строки в списках,хотя в структуре NEWS они есть
0
|
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
|
|
13.07.2012, 20:12 | |
Вот ссылка как раз для твоего случая http://msdn.microsoft.com/en-u... s.85).aspx
Добавлено через 15 минут Вместо простого массива лучше использовать вектор или лист, тогда можно проверить их size(), есть ли записи. Также надо проверять title и link на NULL, и в конце проверяй, что возвращает SendMessage. Скорее всего она возвращает ошибку.
1
|
![]() 60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
13.07.2012, 20:30 [ТС] | |
в цикле,где парсится файл я проверяю данные,они есть,вот почему их в списках нет,я не пойму,хотя надо действителньо проверить,чт возвращает SendMessage
Добавлено через 6 минут можно ли использовать эту функцию не создавая потоки при помощи CreateThread,а то у меня уже не работает код
0
|
![]() ![]() |
||||||
14.07.2012, 00:08 | ||||||
Проще с критическими секциями
Объекты синхронизации Добавлено через 7 минут Ну да это общее
1
|
![]() 60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
14.07.2012, 00:10 [ТС] | |
спасибо,а то из-за буфера для ошибки не хотел проект собираться
0
|
14.07.2012, 00:10 | |
Помогаю со студенческими работами здесь
12
Работа с потоками
Работа с потоками Работа с потоками работа с потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations
рестрикции доступа на сервер sshd
статья:
https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
|
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
|
Многопоточное программирование в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
|
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
|
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
|
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
|
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
|
Образование и практика
Igor3D 21.03.2025
Добрый день
А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
|
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
|
Async/await в Swift: Асинхронное программирование в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
|