|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|
Как обеспечить синхронизацию двух событий, описанных в разных потоках методом execute()10.02.2014, 12:44. Показов 3500. Ответов 38
Метки нет (Все метки)
Добрый день! Подскажите пожалуйста, как обеспечить синхронизацию двух событий, описанных в разных потоках методом execute() ?
В первом- описан вывод цветов RGB на форму, во втором- вывод звука через миди. При включении двух этих потоков одновременно, получается рассинхронизация.
0
|
|
| 10.02.2014, 12:44 | |
|
Ответы с готовыми решениями:
38
Как обеспечить синхронизацию xchg для нескольких потоков? Не работают getch() и cin в двух разных потоках на ввод одновременно/Как снизить нагрузку на процессор? Движение двух фигур в разных потоках |
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||||||
| 13.02.2014, 11:39 | |||||||
0
|
|||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
||||||
| 13.02.2014, 11:55 [ТС] | ||||||
|
Да, увидел отличия, Вы говорите про циклы перед куском кода цвета и звука. А как их синхронизировать?В вашем коде можно добавить ту синхронизацию как вы использовали?
Добавлено через 12 минут Добавил циклы для цвета и звука вот так:
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 13.02.2014, 11:56 | |
|
Pir12345, тут возникает вопрос - нужно ли вам именно два потока на звук и на цвет? Объединить их в один это самый легкий путь.
Если же вам нужны оба этих потока, то нужно уже думать. Есть куча способов подобной синхронизации. Первое, что приходит в голову это в главном потоке (потоке формы) запустить требуемый цикл, переменную Data1 сделать членом формы (ну или глобальной), в цикле ее изменять, а из потоков получать ее значение. Таким образом, каждый поток будет работать с одними и теми же данными, с одной и той же цифрой. Или, к примеру, можно запустить цикл только в одном потоке. И выбрасывать какой-нибудь флаг завершения итерации. А вторым потоком постоянно мониторить первый и ожидать этот флаг.
0
|
|
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|
| 13.02.2014, 12:01 [ТС] | |
|
Мне нужно просто чтобы одновременно воспроизводились цвет и звук(синхронно). Если их объединить в один поток- есть вероятность, что: 1)При выполнении цикла программа зависнет 2) не будет работать СТОП.
Собственно почему я и делил все модули на потоки. Если такого не будет, пожалуйста, пусть будет и цвет и звук в одном потоке.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 13.02.2014, 12:05 | ||
|
И метод RecolorForm и так вызывается из-под синхронизации. Не надо, коли вы так сделали, внутри него опять же синхронизироваться с той же формой.
0
|
||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
||||||
| 13.02.2014, 12:08 [ТС] | ||||||
|
Да появился и в .cpp и в .h соответственно. Вот тот кусок кода:
По идее по этому методу GetSubstrAndPutToData они уже синхронизированы(ну логически)
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||||||||||
| 13.02.2014, 12:11 | ||||||||||||||||||
|
Вот такое соответствие?
Добавлено через 27 секунд И покажите реализацию.
0
|
||||||||||||||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|||||||||||
| 13.02.2014, 14:12 [ТС] | |||||||||||
|
Да такое соответствие, если в labeledit1 введены числа 1234567, если введена другая комбинация- то в соответствии с ней(ну это уже не критично...это просто переменная вводится в labeledit1).
Вот реализация:
SatanaXIII, похоже понял. Убрал с Вашего кода вот это(сделал напрямую, как в звуке):
Разбираюсь с кодом и тестирую дальше!
0
|
|||||||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
| 13.02.2014, 14:17 | ||||||
|
Может быть следующий мой вопрос покажется вам странным, но зачем вам вообще тут потоки?
0
|
||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|
| 14.02.2014, 09:42 [ТС] | |
|
Нет не странный вопрос.
Зачем тут потоки- долгая история попыток написать и оптимизировать работу. Во всех вариантах без потоков у меня 1)зависала(останавливалась) программа на определенном цвете(курсор мышки крутился) (это при наличии одновременно звука)- видимо из за большого количества обрабатываемых строк 2) не работала кнопка стоп. Почитал, что потоки разграничивают и оптимизируют работу. Соответственно принялся в бой. Ну вот так. Сейчас попробую как предлагаете!Такой вариант я вроде не рассматривал. Добавлено через 19 часов 17 минут SatanaXIII, проверил, код из 29 поста тоже работает, и не зависает ничего. Единственное что, при такой совметной записи цвета и звука в радиогруппе1, как развести второй радиогруппой, состоящей из двух кнопок- 1.воспроизводить только цвет 2. Цвет+звук ? Где подлезть то можно? Пробовал тут midiOutOpen(&Out,0,0,0,0); вставить радиогруппу, не идет. В случае присутствия потока цвета и звуа отдельно- там просто, выключаю поток звука и все.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
| 14.02.2014, 10:39 | ||||||
|
Типа тогошеньки:
0
|
||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|
| 14.02.2014, 10:58 [ТС] | |
|
Да, работает, спасибо!
Интересный подход, в одной группе кейсов указывать цвет, звук, да еще и разделение...раньше я думал что компилятор читает последовательно и целой цепочки перебора цветов и звуков неполучиться.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||||||
| 14.02.2014, 11:15 | |||||||
|
Добавлено через 10 минут Более менее по человечески:
0
|
|||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
||||||
| 14.02.2014, 11:34 [ТС] | ||||||
|
Круто!
А если такая разбивка еще? Граммотно? (не учитывая пока конечно ваш последний пост)
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||||||||||||||
| 14.02.2014, 12:57 | ||||||||||||||||||||||
|
Нравоучения
Оформление ужасающее.
Шестая и седьмая строка:
Вот так бы я мог сказать, так как совершенно не видать, что в конце каждой строки стоит слип. Хоть пробелом бы разделили. Все сливается. С шестой по десятую строку:
..и по каждой строке много замечаний. Вообще все это какая-то неуправляемая мешанина из разношерстных команд. От былой стройности кода не осталось и следа. О какой-то там синхронизации звука с цветом вообще речи не идет.
0
|
||||||||||||||||||||||
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
||||||
| 27.02.2015, 12:29 [ТС] | ||||||
|
SatanaXIII, спасибо за "нравоучения", вы говорите что зачем писать в одном case два цвета, разделенных
0
|
||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 05.03.2015, 09:27 | |
|
Нужно составить общую формулу, алгоритм, в котором все это учесть.
Не по теме: P.S. Раз в год Pir12345 появляется на форуме и пишет в продолжении темы. Х)
0
|
|
|
43 / 1 / 1
Регистрация: 05.01.2014
Сообщений: 337
|
|
| 05.03.2015, 11:02 [ТС] | |
|
SatanaXIII, да, к сожалению так получается что захожу редко. По данному вопросу уже создал новую тему.(в старой написал чтобы не плодить одно и тоже). Помню UI предупреждал, что нужно заводить новую тему.
Поможете с общим алгоритмом(в новой теме)?
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 05.03.2015, 11:30 | |
|
Все он правильно говорил. Дальнейшее обсуждение в новой теме: Преобразование массива 7 чисел в вывод 12 позиций
0
|
|
| 05.03.2015, 11:30 | |
|
Может ли один делегат одновременно работать в двух разных потоках? как использовать методы класса в разных потоках? Метод выполнить в 11 разных потоках, соответственно для разных входных массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|