С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
1

Как реализовать очередь нескольких потоков?

09.10.2014, 10:51. Показов 2895. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, коллеги! Посоветуйте, как мне реализовать очередь нескольких потоков? Мне нужно сделать так, чтобы после выполнения одного потока запускался следующий. После успешного завершения следующего - запускался третий и.т.д.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2014, 10:51
Ответы с готовыми решениями:

Как реализовать очередь потоков
Всем привет. Есть такая задача: надо реализовать очередь потоков. В один момент времени может...

Как правильно реализовать очередь потоков
Доброго времени суток! Для работы пишу такую программу: форма содержит группу чекбоксов, с...

Как создать очередь потоков
Есть ли в Java класс, в который можно добавить N потоков, потом одним действем их запустить, и что...

Как дождаться завершения нескольких потоков
Добрый день. Столкнулся с такой проблемой: в методе main() создается n одинаковых потоков, каждый...

10
325 / 136 / 28
Регистрация: 18.09.2014
Сообщений: 167
09.10.2014, 10:57 2
Лучший ответ Сообщение было отмечено BroDIK как решение

Решение

Код
var task = Task.Factory.StartNew(..)//первый пошел
var task2 = task.ContinueWith(...)//второй пошел
var task3 = task2.ContinueWith(...)//третий пошел
1
Эксперт .NET
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
09.10.2014, 10:59 3
Здравствуйте!
А зачем вам так делать? Ведь если операции должны выполняться строго одна за другой, а не параллельно, то зачем запускать новые потоки? Можно ведь все три операции выполнить последовательно в одном потоке и прилично сэкономить на ресурсах для создания и запуска нового потока.
1
40 / 40 / 13
Регистрация: 09.07.2014
Сообщений: 116
09.10.2014, 13:17 4
с помощью ключевого слова await в методе, например, все потоки будут запускаться поочередно.

Нет желания писать код, но у меня скриншот остался когда я еще игралась с потоками
Миниатюры
Как реализовать очередь нескольких потоков?  
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
09.10.2014, 13:18 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Здравствуйте!
А зачем вам так делать? Ведь если операции должны выполняться строго одна за другой, а не параллельно, то зачем запускать новые потоки? Можно ведь все три операции выполнить последовательно в одном потоке и прилично сэкономить на ресурсах для создания и запуска нового потока.
kolorotur, прав. У меня была проблема когда я не мог ставить главный поток на паузу, т.к форма залипала. Из за этого делил на 2 потока(1 форма, 2 функционал), но в вашем вопросе я не вижу ничего подобного
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
09.10.2014, 14:14  [ТС] 6
Цитата Сообщение от kolorotur Посмотреть сообщение
А зачем вам так делать?
Если ТС написал:
Цитата Сообщение от BroDIK Посмотреть сообщение
Мне нужно сделать так
значит так надо Я извиняюсь, наверное, нужно было сразу обозначить суть проблемы. Дело в том, что я работаю с устройством, посылая ему команды. И мне никак нельзя посылать команды параллельно.
Цитата Сообщение от MakcPletnev Посмотреть сообщение
т.к форма залипала
И тем более, я делаю приложение на WinForms. Для этого мне и нужны потоки. Вариант Defazze я уже попробовал - работает Теперь попробуем через await. Чуть позже напишу о результатах.

Не по теме:

Ставлю "Спасибо" в этой теме людям, которые без всяких вопросов дали ответ по делу :)

0
Эксперт .NET
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
09.10.2014, 14:27 7
Цитата Сообщение от BroDIK Посмотреть сообщение
Если ТС написал, значит так надо
В большинстве случаев ТС хочет решить определенную задачу, а не просто поиграться с синтаксисом ради развлечения.
Зачастую путь к решению задачи выбирается неправильный или слишком долгий и сложный: если ТС для задачи по перевозке грузов выбрал сани и теперь спрашивает, какую использовать смазку, чтобы лыжи лучше скользили по асфальту, то правильный ответ должен быть не в категории рассуждений "солидол или вазелин", а предложение поставить прицеп на колеса.

Цитата Сообщение от BroDIK Посмотреть сообщение
Дело в том, что я работаю с устройством, посылая ему команды. И мне никак нельзя посылать команды параллельно.
И тем более, я делаю приложение на WinForms. Для этого мне и нужны потоки.
Исходя из всех данных, полученных от вас, правильным решением будет запустить один отдельный поток, чтобы не вис интерфейс, и в этом потоке последовательно посылать команды.

Не по теме:

Цитата Сообщение от BroDIK Посмотреть сообщение
без всяких вопросов дали ответ по делу
Ну тогда солидол :)

0
1158 / 880 / 513
Регистрация: 09.04.2014
Сообщений: 2,086
09.10.2014, 14:34 8
Цитата Сообщение от BroDIK Посмотреть сообщение
И мне никак нельзя посылать команды параллельно.
а зачем их посылать из разных потоков, вот что интересно (для расширения собственного кругозора)
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
09.10.2014, 14:41  [ТС] 9
Цитата Сообщение от kolorotur Посмотреть сообщение
Исходя из всех данных, полученных от вас, правильным решением будет запустить один отдельный поток, чтобы не вис интерфейс, и в этом потоке последовательно посылать команды.
На форме находятся много вкладок, в которых есть еще вкладки. А на этих вкладках есть несколько ListView. В зависимости от определенных строк ListView, команды посылаются различных форматов. И, конечно, перед этим собираются данные с определенных вкладок и конвертируются соответственно. Что теперь нужно сделать? Снова все в одном отдельном потоке? Может есть вариант по-лучше? Посоветуйте)

Добавлено через 3 минуты
Цитата Сообщение от nedel Посмотреть сообщение
а зачем их посылать из разных потоков, вот что интересно (для расширения собственного кругозора)
Потому что в нескольких командах формат сообщения синтаксически и в последовательности отправки (изредко) повторяется.

Добавлено через 1 минуту
Tirenta, Ваш вариант, к сожалению, мне не подходит: версия C# != 5
Но все равно спасибо
0
Эксперт .NET
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
09.10.2014, 15:01 10
Цитата Сообщение от BroDIK Посмотреть сообщение
На форме находятся много вкладок, в которых есть еще вкладки. А на этих вкладках есть несколько ListView. В зависимости от определенных строк ListView, команды посылаются различных форматов. И, конечно, перед этим собираются данные с определенных вкладок и конвертируются соответственно. Что теперь нужно сделать?
В какой момент происходит отправка очередной команды?
При выборе вкладки?
При клике на элемент ListView?
При клике по кнопке?
По таймеру?

Если не сложно, опишите алгоритм, по которому работает приложение.
Пока что больше всего похоже на то, что вам нужен паттерн Producer/Consumer, но прежде чем кидаться в реализацию, хотелось бы по-больше информации.

Добавлено через 1 минуту
Ну и чтобы два раза не вставать: под какую версию фреймворка пишете?
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
10.10.2014, 09:03  [ТС] 11
Это уже совсем другая тема Всем спасибо за советы
0
10.10.2014, 09:03
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2014, 09:03
Помогаю со студенческими работами здесь

Как обезопасить dataReader от доступа из нескольких потоков?
Привет! Имеется несколько таблиц с изображениями и несколькими сотнями строк. Чтобы считывание...

Как сделать чтобы массив заполнился из нескольких потоков?
Задан двумерный массив A из N x N элементов, расположенный в локальной памяти каждой нити, то есть...

Как обеспечить синхронизацию xchg для нескольких потоков?
Добрый вечер. Требуется небольшая консультация по мьютексам. Вообщем, вопрос в следующем. Есть код...

Отобразить ход нескольких потоков в нескольких ProgressBar
Возник вопрос как прикрепить ProgressBar к потокам, к примеру 100 потоков, нужно, чтобы ProgressBar...

Как реализовать создание и завершение потоков
Здравствуйте ув.форумчане! Подскажите пожалуйста как реализовать старт и стоп потоков. В библиотеке...

Как реализовать рекурсию в синхронизации потоков
Здравствуйте.Объясните чайнику как реализовать рекурсию в синхронизации потоков(сам софт...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru