|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
|||||||||||
Работа с тремя потоками30.01.2011, 22:40. Показов 2825. Ответов 13
Метки нет (Все метки)
Нужно сварганить 3 потока: первый основной(чтоб форма не залипала, все нужно вынести в следующие два), второй(бесконечный цикл) из которого в третий должны постоянно передаваться 2 массива(
Помогите сообразить плз...
0
|
|||||||||||
| 30.01.2011, 22:40 | |
|
Ответы с готовыми решениями:
13
Написать программу с тремя потоками: чтение из файла, возведение в квадрат, запись в файл Работа с потоками! Работа с потоками |
|
Почетный модератор
|
|
| 30.01.2011, 23:37 | |
|
Собственно, непонятно - нафига тебе тут 2 ( + 1 основной = 3 потока) дополнительных потока? Делай в одном дополнительном потоке обработку массива и выводи на форму. Или сформулируй задание чётче.
0
|
|
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
|||
| 30.01.2011, 23:47 [ТС] | |||
|
А в третьем уже Совершенно другая работа выполняться будет... Нужно чтобы и то и другое выполнялось одновременно...
0
|
|||
|
Почетный модератор
|
|||||||||||
| 31.01.2011, 00:27 | |||||||||||
|
Вот пример. Только я не создавал такие большие массивы. Скорее всего ты не отделаешься 2 доп. потоками, иначе придется делать синхронизацию => не будет одновременности.
В Label выводится кол-во созданных доп. потоков. UPD: измени
1
|
|||||||||||
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
|||||||
| 31.01.2011, 01:25 [ТС] | |||||||
|
убрать всю ерунду с рандомами, и наконец пример работы с потоками(присваивание 0 элементам в Thread1
0
|
|||||||
|
Почетный модератор
|
|||||||
| 31.01.2011, 01:38 | |||||||
1
|
|||||||
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
||||||
| 31.01.2011, 15:46 [ТС] | ||||||
|
что происходит в этой строке?
0
|
||||||
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
||||||
| 31.01.2011, 18:05 [ТС] | ||||||
|
сунул все свое добро в первый поток, все ок...
интересует вывод:
0
|
||||||
|
Почетный модератор
|
|
| 31.01.2011, 18:57 | |
|
Я же тебе целый проект скинул, там есть вывод. О условии прочитай тут: Control.InvokeRequired - это нужно для вывода данных из другого потока.
Не по теме: И хорош мне по каждому вопросу в ЛС писать.
0
|
|
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
||
| 31.01.2011, 20:52 [ТС] | ||
|
Хотел вставить некоторые действия с задержкой sleep, думал разово выполнятся, а они бесперебойно... Может создание потока(3) вынести из бесконечного цикла?(а если не будут передаваться данные?) помоги плз А можно ли сделать так чтобы третий поток брал из второго потока элементы массива когда это требуется?
0
|
||
|
Почетный модератор
|
||||||||||||
| 31.01.2011, 21:34 | ||||||||||||
|
Обобщенный ответ: как ты поставил вопрос, такой и ответ!
тут
Ты просил одновременное выполнение потоков, я привёл пример - дальше сам пожалуйста.
0
|
||||||||||||
|
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
|
|
| 31.01.2011, 21:47 [ТС] | |
![]() В том то и дело это не то о чем я просил... нету параллельности(одновременности) Тоже самое получится если содержимое потока 3 чкнуть в цикл второго потока
0
|
|
|
Почетный модератор
|
|||||||
| 01.02.2011, 23:28 | |||||||
|
Порядок работы моего кода: 1) Запускается поток Thread0; 2) Выполняются действия над массивами; 3) Запускается Thread1 (новый поток), дальше уже параллельно выполняются 2 фрагмента (I и II): I) Повтор начиная с 2го пункта; II) Выполнение кода в методе Thread1, Вывод в TextBox. (А в это время уже обрабатываются исходные массивы (п. 2) и достигается п. 3). Поэтому я и создал счётчик потоков, в котором наглядно показывается, что потоки выполняются одновременно. Хочешь чтобы было всегда 2 потока, без проблем: (используется синхронизация, и только (!!!) 2 массива, число доп. потоков постоянно, и равно 2)
Порядок выполнения - последовательный (т.к. используется синхронизация): 1) При создании экземпляра формы, в конструкторе происходит инициализация 2 событий (AutoResetEvent), со сброшенным статусом. 2) Во время клика создаются 2 потока и зависают на моментах (while(mrEventX.WaitOne() && ...) т.к. оба сброшены. 3) После создания потоков первому событию (mrEvent0) присваивается установленный статус, и код в Thread0 после while(mrEvent0.WaitOne() && ...) начинает исполнение, как только он доходит до mrEvent1.Set() начинает исполнение код в методе Thread1 после while(mrEvent1.WaitOne() && ...). 4) Как только исполнение доходит до mrEvent0.Set() начинает выполнятся код в Thread0 после while(mrEvent0.WaitOne() && ...). 5) Шаги с 3 по 5 выполняются до тех пор пока stopAll не станет true. Надеюсь теперь ты понял разницу между последовательно и параллельно выполняющимися потоками. + также прошу заметить то, на сколько % загружает ЦП 1й и 2й варианты (это в доказательство параллельности 1го метода).
1
|
|||||||
| 01.02.2011, 23:28 | |
|
Помогаю со студенческими работами здесь
14
Работа с потоками Работа с потоками Работа с потоками Работа с потоками Работа с потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|