|
0 / 0 / 0
Регистрация: 05.03.2023
Сообщений: 17
|
||||||
Задача со звездочкой, на логику (про массив)03.04.2023, 20:07. Показов 2152. Ответов 35
Метки нет (Все метки)
Придумал чепуху чтобы вы поломали головы. Есть массив
0
|
||||||
| 03.04.2023, 20:07 | |
|
Ответы с готовыми решениями:
35
Задача на логику, про путешественника и ограниченный бюджет Подскажите про логику
|
|
фрилансер
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
|
|
| 04.04.2023, 13:38 | |
|
0
|
|
|
Нарушитель
|
||||||||||||
| 04.04.2023, 13:41 | ||||||||||||
|
Итак, как и обещал. Вот код:
Сейчас набросаю вывод в 10 потоков чисел от 1 до 1000.
0
|
||||||||||||
|
фрилансер
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
|
||
| 04.04.2023, 13:59 | ||
|
собственно, объясни, почему тут не будет гонки? Я не понимаю. Пока что я вижу, что есть гонка
-O1 начались фокусы ![]() я попробовал в компиляторе C и C++17 - одинаковое поведение (то есть, с оптимизацией - не работает) добавил в C++ atomic (там это в одно движение делается) - и всё починилось
0
|
||
|
Нарушитель
|
|||||||
| 04.04.2023, 14:10 | |||||||
|
atomic, кстати, не помогает, как и volatile. Необъяснимым образом эта проблема решилась после того, как я вставил usleep:
А без usleep оно или адски тормозило, или вообще зависало. volatile можно убрать: и без него работает. А вот попытка напечатать в 1000 потоков числа до 1млн тоже не вышла: зависло все к чертям (и заработало после увеличения паузы до 1000).
0
|
|||||||
|
фрилансер
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
|
||||
| 04.04.2023, 14:19 | ||||
|
С++ https://onlinegdb.com/UXtPEOj4B Добавлено через 4 минуты Но и понятно, что никому не нужен код со слипом
0
|
||||
|
Нарушитель
|
||
| 04.04.2023, 14:22 | ||
|
Вообще не понимаю, где ломается моя логика: каждый поток ждет, пока его флаг станет равным нулю. Однако, это адово тормозит и даже "заедает". Т.е. какой-то поток, получив 0 в своем флаге, выходит из while, ставит себе 1 во флаг, но почему-то до printf дело не доходит, как и не доходит до разблокировки следующего потока.
0
|
||
|
фрилансер
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
|
|||
| 04.04.2023, 14:25 | |||
![]()
0
|
|||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 04.04.2023, 14:26 | ||
|
0
|
||
|
Нарушитель
|
|||
| 04.04.2023, 14:29 | |||
|
Добавлено через 1 минуту
0
|
|||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 04.04.2023, 14:29 | |
|
0
|
|
|
Нарушитель
|
|
| 04.04.2023, 14:30 | |
|
zayats80888, зачем синхронизировать разрешение? Как только я изменил переменную, поток об этом узнал… Не может же кто-то другой установить этот флаг в 1 одновременно с разрешающим потоком!
0
|
|
|
фрилансер
6502 / 5740 / 1134
Регистрация: 11.10.2019
Сообщений: 15,382
|
|
| 04.04.2023, 14:33 | |
|
Eddy_Em, этап принятия необходимости синхронизации:
торг
0
|
|
|
Нарушитель
|
||||||
| 04.04.2023, 14:36 | ||||||
|
В общем, сработало вот так - заменой флагов на мьютексы:
Да, fflush здесь тоже не нужен, т.к. только тормозит.
0
|
||||||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 04.04.2023, 14:37 | ||
|
0
|
||
|
Нарушитель
|
|
| 04.04.2023, 14:43 | |
|
До меня таки не доходит, откуда здесь взялись условия гонки и кто тот "вредный тип", который флаг меняет на 1, как только я его в 0 сброшу!
Я понимаю, бывают проблемы "гонок", когда в разных потоках пытаешься изменить значение одной и той же переменной (в итоге там может быть мусор какой-то), ну или доступ к ресурсам (в тот же сокет написать последовательно - нужны мьютексы). Но здесь совершенно элементарная задача - и таки без мьютексов не обойтись… Что-то я со своими микроконтроллерами уже совсем далек стал от компьютера. Там-то все вообще просто: поток может быть только один, разве что прерывания периодически возникают. Но никаких блокировок и атомарных переменных не нужно вообще.
0
|
|
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 04.04.2023, 14:54 | |
|
Eddy_Em, как минимум - в вашем коде из поста 24, вы передаете в поток указатель на флаг, который является и флагом и значением. Поэтому, если он будет изменен одним потоком до того, как прочитан другим в строке 13, вы получаете не то, что хотите.
0
|
|
| 04.04.2023, 14:54 | |
|
Задача про массив
Задача про массив Про логику движения по окружностям Про логику работы игры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|