|
-39 / 2 / 1
Регистрация: 21.09.2015
Сообщений: 58
|
|
.NET 4.x Инструмент многопоточного программирования22.09.2015, 12:18. Показов 6903. Ответов 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 | |
|
Паттерны многопоточного программирования Умножение матриц с использоанием многопоточного программирования Время многопоточного выполнения функции Разработка многопоточного приложения для обучения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|