![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Значит писал я прогу с 2мя процессами и синхронизировал их спомощью мютексов. Теперь же хочу научится работать с потоками. Тоесть у меня текст тех процессов есть а хочу так чтобы они выполнянлись потоками, а потом добавить синхронизацию с помощью критических секций. Вот что я попробывал сделать:
Вот заработало у меня всё... но остался вопрос по поводу 4 параметра ф-ции CreateThread, что он показывает? Это сообщение отредактировал(а) iPlay - 23.9.2007, 20:31 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
блииин... гуглом пользоваться умеешь?
MSDN (пошел по первой же ссылке)
Отсюда мы видим, что 4-й параметр имеет имя lpParameter. Его значение - при создании потока ты можешь ему передать 32-битное целое. |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Умею. Я просил объяснить почеловечески так как не понял что MSDN пишет.
Добавлено через 6 минут и 18 секунд Подскажите как сделать синхронизацию с критической секцией тоесть чтобы сначало поток поменял значение файла а потом вывел уже смененные данные. Я попробывал вот так но всё равно сначало выводится потом меняется ![]()
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Что-то я не поняла: а где тут синхронизация и критические секции?
А насчет параметра - это любой параметр, который можно впихнуть в 32битное целое. Например, адрес структуры с твоими данными. Дальше этот параметр передается твоей функции потока и может там использоваться. -------------------- ... |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
Ты в этих двух потоках создал разные критические секции. А тебе нужно использовать одну и ту же.
вот это убери из функций обеих потоков и напиши перед всеми функциями, как глобальную переменную. Инициализацию критической секции вынеси в main(), она для каждой секции тоже должна вызывать только один раз. Это сообщение отредактировал(а) JackYF - 23.9.2007, 21:04 |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Earnest, ты второй код прочитай.
JackYF, создал но всё равно сначало выводит потом меняет. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
||||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
А его не было еще, когда я ответ писала ![]() Значит, первым секцию хватает поток, который печатает. Видимо, ты его первым создаешь. Строго говоря, даже если ты первым будешь создавать поток изменения, не факт, что он успеет схватить секцию. Чтобы не зависеть от порядка создания потоков, одной критической секции недостаточно. И вообще, критическая секция скорее предназначена для синхронизации обращения к общим данным. А здесь больше подойдет событие. Поток изменения по окончании должен установить его, а поток печати - ждать, пока оно не будет установлено. -------------------- ... |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
В том то всё и дело что я бы и сам сделал с событием но в задание просят критические секции (чтоб они были не лады). Ладно попробую чёто придумать.
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Нужно синхронизировать два потока с помощью крит. секций. 1й поток выводит файл. 2й поток меняет содержимое файла. Я для проверки решил сначала поменять потом вывести и тут ниче не получается что бы я не делал всё равно сначала срабатывает поток вывода.
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
||||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
JackYF, причем то же самое выше было "озвучено" камрадами zkv и
Earnest... ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |