Есть ли преимущество операционной системы в понимании характеристик того, как можно использовать поток? - PullRequest
2 голосов
/ 11 апреля 2009

Есть ли у операционной системы преимущество в понимании характеристик того, как можно использовать поток? Например, что если бы в Java был способ при создании нового потока указать, что он будет использоваться для интенсивных вычислений ЦП, он будет блокироваться для ввода-вывода. Не улучшится ли планирование потоков, если бы это была возможность?

Ответы [ 4 ]

3 голосов
/ 11 апреля 2009

Я не уверен, что вы на самом деле ожидаете, что ОС будет делать с информацией о том, что поток является вводом-выводом или вычислением. Вещи, которые на самом деле имеют наибольшее значение для того, как потоки планируются (то есть приоритет потока и сродство к процессору потока), уже раскрыты API (и поддержка аспектов NUMA начинает появляться и в API основной ОС).

Если под «вычислительным потоком» вы подразумеваете, что он выполняет фоновую обработку и менее важен, чем поток с графическим интерфейсом (с точки зрения поддержания отзывчивости приложения), вероятно, наиболее полезная вещь, которую вы можете сделать, - это снизить приоритет вычислений. темы немного.

3 голосов
/ 11 апреля 2009

Это то, что делают процессы ОС. ОС имеет сложное планирование для процессов. ОС отслеживает использование ввода-вывода и ЦП и динамически настраивает приоритеты, чтобы интенсивная загрузка ЦП не мешала вводу-выводу.

Если вам нужны эти функции, используйте правильный процесс ОС.

1 голос
/ 11 апреля 2009

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

У Джеффа Рихтера в Wintellect есть библиотека под названием PowerThreading . Это очень полезно, если вы разрабатываете приложения для .NET, но поскольку вы говорите о JAVA, все же лучше понять потоки ОС, модели ядра и то, как работают прерывания.

1 голос
/ 11 апреля 2009

Это вообще необходимо? Блокировка потоков при вводе / выводе приведет к запуску потоков, интенсивно использующих процессор. Операционная система решает, как планировать потоки. AFAIK, нет никакого способа дать какие-либо подсказки с Java.

...