|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|
.NET 4.x Инструмент многопоточного программирования22.09.2015, 12:18. Показов 6814. Ответов 74
Метки нет (Все метки)
Программирование многопоточных приложений крайне непростое дело. Приходится обходить много подводных камней: учитывать гонки, взаимоблокировки и др. Специально для облегчения разработки программ создан инструмент, с помощью которого эти затруднения легко разрешимы. Инструмент представляет собой библиотеку классов, написанную на C# и включающую достаточное количество методов, позволяющих просто писать довольно сложные многопоточные приложения. Всем, кто интересуется созданием параллельных программ, эта библиотека классов способна в значительной степени облегчить написание кода.
Если будут какие-то вопросы, с удовольствием отвечу. А также буду весьма признателен за выявленные недостатки. Программное обеспечение исполняющей среды представлено классами пространства имен – BindingAndServisParallel. Полная документация, библиотека классов и пример хранятся: sites.google.com/site/algonauts/Home/fajly в файлах DocCoreParallel.docx, BindingAndServisCoreParallel_dll.dll, main.cs. Пример компилируется в среде Visual Studio 2010 Express на 64-х битной платформе. При компиляции проекта следует добавить ссылки: BindingAndServisCoreParallel_dll, PresentationCore, PresentationFramework, System, System.Xaml, WindowsBase Библиотеку классов BindingAndServisCoreParallel_dll версия сборки 0.0.0.1 можно использовать без ограничения в любых целях.
0
|
|
| 22.09.2015, 12:18 | |
|
Ответы с готовыми решениями:
74
Создание многопоточного приложения Оптимальная реализация многопоточного приложения Ведение лога для многопоточного приложения |
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||||||
| 28.09.2015, 12:53 [ТС] | ||||||
|
Psilon
чую-чую-чую! Вдохновлялись винапи?
0
|
||||||
|
|
||
| 28.09.2015, 14:38 | ||
|
Я не проф. кодер, но даже у меня есть несколько программ, работающих с многопоточностью. Думаю, у профессионалов их больше в разы. И теперь выходит, что все они бестолковые??? А вы всем открыли глаза, оказывается??
0
|
||
|
Master of Orion
|
|
| 28.09.2015, 16:25 | |
|
insite2012, не, ну раньше как-то и без JQuery сайты верстали, и норм было, а щас вот неудобно. Вопрос только в том, что автор сделал что-то полезное и юзабельное, либо не очень. Я пока склоняюсь к последнему варианту. Но может я просто слишком плохо разбираюсь в теме. Например, вот человек писал про то, как он RTOS разработал. У него я вот тоже не понял, зачем так делать двусвязный список, но учитывая общий уровень статьи, тоже не стал рано судить. И ниже он объясняет, почему именно так, а не иначе. Но там и код совсем другого уровня (посмотрел на гитхабе исходники). Так что по косвенным признакам вроде привязки к WPF (это вообще пушка), полное презрение к функции цитирования (выдают крайнюю степень велосипедостроения) можно делать какие-то выводы.
0
|
|
|
|
||
| 28.09.2015, 17:58 | ||
|
0
|
||
|
Master of Orion
|
|
| 28.09.2015, 19:09 | |
|
insite2012, считаешь, что всё что можно уже напрограммировали и изобрели?
Лично я предполагаю иначе. Так что новое, до чего еще никто до этого не догадался, вполне может появиться, мы только на пороге IT-эры, сейчас это по большей части искусство, а не ремесло, поставленное на поток. Есть куда расти. Соответственно возможны и самородки. Вопрос только в том, что мы имеем в данном случае. Так как считаем мы, полагаю, одинаково, можно дальше тему не развивать.
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||
| 29.09.2015, 09:04 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 5
|
|
| 08.10.2015, 08:22 | |
|
Можно ли с помощью этого пакета выполнить параллельно сортировку массива? Мне кажется что можно, но как это сделать конкретно. У меня 4-х ядерный процессор, а в документации сказано, что ядер должно быть не менее 8. Это существенно?
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|||
| 08.10.2015, 12:00 [ТС] | |||
|
public int CreateUnitAsServer (object F1, object Argument1, object F2, object Argument2, object F3, object Argument3) количество свободных ядер под потоки (юниты) будет рано 4-3=1, т.е. одно физическое ядро. Одно ядро зарезервировано для ОС, два ядра зарезервированы за исполнительной системой. На одном ядре можно будет запустить программу, но проку от этого не будет. К понедельнику добавлю команды типа public int CreateUnitAsServerDirectCore (object F1, object Argument1, object F2, object Argument2, object F3, objectArgument3, int Core) С помощью этих команд указывается номер ядра на котором будет выполняться поток, будут разрешены все ядра процессора, и тогда можно будет использовать 4-х ядерный процессор на полную мощность. Вообще говоря, библиотека ориентирована на процессоры с количеством ядер не меньше 8.
0
|
|||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||||||
| 19.10.2015, 10:15 [ТС] | ||||||
|
Для выполнения программы надо скачать новую версию BindingAndServiceCoreParallel. Если затрудняетесь с настройками Visual Studio 2010 на 64-х битную платформу, в документации добавлен раздел Дополнительно, разъясняющий вопрос.
С программой будьте осторожней, не запускайте сразу большой массив, убедитесь, что процессор хорошо охлаждается или уменьшите скорость работы юнитов, - в комментариях программы указано как сделать.
0
|
||||||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||||||
| 19.10.2015, 10:16 [ТС] | ||||||
0
|
||||||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||||||
| 19.10.2015, 10:18 [ТС] | ||||||
Вся программа не размещается в одном посте, поэтому разбита на 3 части. Соедините их вместе или скачайте с сайта файл main.cs.
0
|
||||||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||||||
| 19.10.2015, 13:18 [ТС] | ||||||
|
Дык, котлета собственно
Кода много, но в принципе он простой.
0
|
||||||
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
||||||
| 19.10.2015, 21:51 | ||||||
|
Dedoc, зацени какой я код нашел, как круто получилось!
Еще есть сравнимый шедевр на тему, называется ЩИ!!!Симулятор жестокости. Извините.
0
|
||||||
|
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 5
|
|
| 20.10.2015, 21:31 | |
|
Это, похоже то, что надо, необходимо выполнить некоторую работу с максимальной эффективностью. Правильно ли понимаю, что любую задачу, заключающуюся в том чтобы выполнять действия над объектом имеющим линейные координаты независимо по отдельным участкам, можно свести к представленной реализации сортировки массива. Попробую взять из кода рациональное зерно и адаптировать под свою задачу, хотя у меня непрерывная многомерная система координат.
Концепция применения юнитов немного непривычна, на что посоветуете обратить внимание, от кода просто пестрит в глазах?
0
|
|
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||
| 21.10.2015, 15:11 [ТС] | ||
Прежде разберитесь, что такое юнит. Фактически юнит представляет поток, выполняющий в бесконечном цикле 3 метода. Эти методы и аргументы к ним можно задавать при создании юнита или добавлять/убирать в ходе выполнения программы. Минимум должно быть 2 юнита и один из них условно называется юнит-сервер, на рисунке изображен слева. Юнит-сервер начинает работу и выполняет подряд два метода F1 и F2 ( те, которые заданы при инициализации юнита). Обычно в методе F1 производится общая настройка системы, в методе F2 подготавливаются задания для юнит-клиента. Далее (см. блок-схему) управление передается юнит-клиенту. Как правило этот юнит производит основную работу, что-то вычисляет и т.д., т.е реализует задание юнит –сервера. Условно он может выполнять три различных метода. Это необязательно и больше для удобства. После того как юнит-клиент отработал, управление снова передается юнит-серверу. Как правило, с юнит сервером связаны несколько клиентов. Сервер ждет пока все они не отработают, т.е. не выполнят команду return. Когда все клиенты отработают, сервер собирает результаты их работы, можно путем чтения содержимого return (object) X или через общую переменную класса, как хотите. В методе F3 сервер , проанализировав данные, решает что делать дальше, можно закончить работу, можно продолжить цикл или выполнить другие действия. После этого управление снова- передается методу F1, который, скорее всего, должен пропустить свою работу (он выполняет подготовительные действия), управление переходит к методу F2 и цикл продолжается. Юнит, сам по себе работает постоянно. Его можно либо удалить, либо загнать в паузу, можно указать низкую скорость работы.
0
|
||
|
Master of Orion
|
||||||
| 21.10.2015, 16:28 | ||||||
|
Dedoc, вот вам кстати моя супер-библиотечка. Сортирует многопоточно, даже без SortingManager'ов.:
3
|
||||||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||
| 22.10.2015, 09:46 [ТС] | ||
|
Шикарная библиотека! ParallelEnumerable – класс Потокобезопасность членов экземпляров не гарантируется. Это дедушкины валенки, выбросите все это из головы и пользуйтесь современными средствами многопоточности.
0
|
||
|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
||
| 22.10.2015, 10:57 [ТС] | ||
|
0
|
||
| 22.10.2015, 10:57 | |
|
Паттерны многопоточного программирования Умножение матриц с использоанием многопоточного программирования Время многопоточного выполнения функции Разработка многопоточного приложения для обучения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение 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: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|