Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для maxon887
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280

Почему C# создает 7 потоков для консольного приложения

07.05.2014, 16:04. Показов 1928. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Меня обескуражело что следующий код консольного приложения создал 7 потоков, целых семь штук!
C#
1
2
3
4
5
6
7
    class Program
    {
        static void Main(string[] args)
        {
            Console.Read();
        }
    }
А в виндовском диспетчере отобразилось целых 11штук.
В то время как оналог на С++
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main()
{
    getchar();
    return 0;
}
Сделал то что я ожидал, и там и там. Объясните мне пожалуйста что это за потоки и зачем они нужны. Или ссылочку на инфу, а то я даже незнаю куда копать.
Миниатюры
Почему C# создает 7 потоков для консольного приложения  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2014, 16:04
Ответы с готовыми решениями:

Почему однопоточное приложение создает несколько потоков
Оконное однопоточное приложение WinApi создает кроме главного еще 4 рабочих потока.

Почему зависает форма при работе консольного приложения?
Есть консольное приложение using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

GUI для консольного приложения
Как можно интегрировать GUI приложение на MFC и консольное приложение C++?

9
 Аватар для maxon887
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
07.05.2014, 16:13  [ТС]
А вот по размеру выпустившегося модуля шарп порадовал, 5кб против 61кб модуля на плюсах)))
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
07.05.2014, 17:12
Лучший ответ Сообщение было отмечено maxon887 как решение

Решение

maxon887, кол-во потоков лучше смотреть не из студии т.к. отладчик VS создает дополнительные потоки для своей работы. Запусти exe из проводника и посмотри кол-во потоков с помощью Process Explorer.

В простом .NET приложении будет больше чем 1 поток из-за потока для GC, потока финализации и потока для JIT. Также могут быть видны потоки для ThreadPool. Все эти потоки спят большую часть времени.
3
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.05.2014, 23:56
maxon887, не парьтесь, это все цифры сферические в вакууме. В среднем шарп медленнее плюсов на 10-15% и более, а также занимает на 2-3мб больше памяти (сюда идут дллки JIT'а, и некоторые другие служебные вещи).

И если первое поправят с выходом RuyJIT (потому как код шарпа почти не оптмизируется, а на плюсах любят включать -O3 ), то второе - вряд ли, но с другой стороны 3мб дополнительно на приложение - не проблема.

Так что не расстраивайтесь, чистый С вон тоже быстрее плюсов по этим параметрам (а как же, таблицы виртуальных методов и все такое, это же тоже стоит времени по сравнению с прямым вызовом метода), но никто не задумывается об этом Потому что за 10мс выполнится код, или за 12 - не особо важно, потому что обычно проблема в криво сделанных индексов в базе, из-за которых примитивный запрос обрабатывается не 100мс, а секунду.
1
 Аватар для maxon887
12 / 12 / 7
Регистрация: 05.06.2012
Сообщений: 280
08.05.2014, 12:31  [ТС]
Psilon, Да я не то что парюсь из-за производительности, просто не люблю когда за моей спиной что то происходит
0
08.05.2014, 12:39

Не по теме:

Цитата Сообщение от maxon887 Посмотреть сообщение
не люблю когда за моей спиной что то происходит
Вспомнилось
Рекомендации инспектора ГАИ по профилактике угонов автомобилей:
1) Не покупайте автомобиль... (©)

0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
08.05.2014, 15:07
Цитата Сообщение от Psilon Посмотреть сообщение
В среднем шарп медленнее плюсов на 10-15% и более, а также занимает на 2-3мб больше памяти (сюда идут дллки JIT'а, и некоторые другие служебные вещи).
Ну тут нужно задачу смотреть. Шарп уступает плюсам на больших приложениях из-за необходимости компиляции блоков. На простой задаче сортировки он плюса уделывает.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
08.05.2014, 15:42
LeniumSoft, шарп проигрывает хотя бы потому, что у него оптимизации не такие агрессивные. Например, шарп не умеет в хвостовые рекурсии, а плюсы даже с -O2 её разворачивают. Ну и необходимость после каждого перезапуска приложения заново перекомпилировать код тоже воображение не поражают

Добавлено через 59 секунд
maxon887, за спиной ничего нет, все это есть в спецификации Другое дело, что вы её вряд ли читали
2
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
08.05.2014, 20:51
Ну, например, в больших приложениях я, чтобы компенсировать ущерб производительность, да и вообще ускорить его в несколько сот раз, самый тяжелый код кидаю, по возможности, на GPU (через brahma или куду, для любителей C/C++, очень советую освоить, навык очень полезный если работаете с big data)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
08.05.2014, 21:34
eocron, зависит от объема кода. Если 100ккк тяжелых вычислений - то вариант. А перемножить матрицы 2048х2048 - быстрее на CPU, тупо многократное копирование данных (сначала из управляемой памяти в неуправляемую, а затем в память GPU, после вычислений все в обратном порядке), отсутствие возможности условных переходов всяких и т.д. В общем, есть определенные ограничения. А вот SIMD в шарпе обещает появиться с новым компилятором (кстати, который уже поддерживает и хвостовые рекурсии, и все прелести жизни, а также поддерживает оффлайн-компиляцию а-ля nGen, только вот в бинарники, насколько я понял, поэтому не требуют даже фреймворка, и оптимизации в котором не хуже, чем в плюсах ). Подробнее о SIMD можете почитать в моем переводе на хабре
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2014, 21:34
Помогаю со студенческими работами здесь

LazFileUtils для консольного приложения
В LazFileUtils есть функция GetCurrentDirectoryUTF8, есть ли аналог для консольного приложения?

GUI для консольного приложения
вопрос в передаче параметров пока это выглядит так textbox1.text+&quot; &quot;+combobox1.text+&quot; &quot;+... но это как-то не красиво может...

Таймер для консольного приложения
Добрый день, подскажите как реализовать таймер в консольном приложение. Таймер нужен для ожидания нажатия клавиши, если ничего не нажали то...

Интерфейс для консольного приложения
Здравствуйте! Есть программа, которая запускается и работает через командную строку. Нужно сделать для нее интерфейс. Подскажите с чего...

Иконка для консольного приложения
Я хочу установить иконку к своему консольному приложению, работаю в Code Blocks. Я долго искал информацию на эту тему в интернете, но найти...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru