Практическое использование для нитей


3

В вашей работе, к чему конкретно вы использовали темы?

(Пожалуйста, дайте описание приложения и как нить помог/расширить применение.)

+2

Это не очень специфично. Есть ли реальный вопрос? Я думаю, что большинство из нас использовали темы для сотен задач. Вы могли бы также спросить, что мы использовали для «if statements» for. 22 фев. 092009-02-22 01:03:36

+1

Понюхает немного домашнее задание. 22 фев. 092009-02-22 01:07:29

  0

Ха-ха, да, это звучит немного домашнее задание. 22 фев. 092009-02-22 01:23:46

  0

Звучит скорее как вопрос о задании на работу, чем домашнее задание ... 22 фев. 092009-02-22 01:31:26

  0

Может быть, хотя я буду признавать, что, хотя я все еще в школе, может быть трудно увидеть применимость всего ненужного броска на вас, поэтому я дам ОП в пользу сомнения. 22 фев. 092009-02-22 01:31:32

  0

Andrew: Возможно, но тогда более подробная информация об этом контексте будет приятной. Даже просто сказать, что вы только что сделали, поможет нам вернуться на реальные полезные ответы. 22 фев. 092009-02-22 01:33:38

0

Для сканирования каталогов в поисках измененных файлов. Гораздо быстрее создать поток в подкаталог, а затем сделать это в одном потоке.

  0

Но быстрее ли создавать поток в подкаталог, чем использовать пул рабочих потоков с фиксированным размером? 22 фев. 092009-02-22 01:59:02

  0

Я использую пул потоков. 22 фев. 092009-02-22 02:14:12


1

. Наиболее распространенное использование для отображения пользовательского интерфейса, например, отображение индикатора выполнения для выполнения заданий на длительное время.

  0

В некоторых ситуациях явная передача сообщений работает почти так же, и их легче сделать, даже если потоки являются «правильными» подходами. 22 фев. 092009-02-22 01:25:54


4

Резьба важна для большинства пользовательских интерфейсов. В противном случае, в любое время, когда вы хотите сделать расчет или что-то еще, вы замерзаете пользовательский интерфейс.

Поэтому большинство графических интерфейсов GUI имеют потоки пользовательского интерфейса, которые обрабатывают цикл событий (и некоторые операции рисования), но большинство пользовательских кодов происходит в другом потоке.

Темы также полезны для периодической проверки вещей или внесения эпизодических изменений в состояние системы.

  0

Это возможное использование для потоков, но неправильно сказать, что «большинство графических интерфейсов GUI имеют потоки пользовательского интерфейса ..., но большинство пользовательских кодов происходит в другом потоке». Это не было обычным явлением в любой графической оболочке, которую я использовал. 22 фев. 092009-02-22 02:08:54

  0

Вы правы, термин GUI framework был неправильным, потому что это подразумевает набор инструментов GUI. Я имел в виду рамки для создания приложений, таких как Eclipse. 22 фев. 092009-02-22 03:41:24


1

Фоновые задачи:

  • Handling сетевые соединения и протоколы.
  • Выполнение звука Синтез работает на фоне мультимедийного приложения.
  • Ведение файла-загрузки в фоновом режиме в мультимедийных приложениях (CD потоковом)

Другие области применения:

  • Ускорение определенные алгоритмы, запустив два экземпляра одного и того же кода в двух разных потоках.

0

Мы использовали потоки для нескольких приложений, где основной экран состоял из рабочего процесса, адаптированного для текущего пользователя.

Получение рабочего процесса может быть интенсивным. Различные части рабочего процесса загружаются различными потоками. Для нашего основного приложения BP/GeNA запущено около 11 потоков, каждый из которых выполняет запрос базы данных.

С уважением,
Ливен


2

Обработка одновременных клиентских запросов на сервере.


0

Я чаще всего использую потоки, когда хочу что-то сделать с кучей ресурсов, которые, как я знаю, займут много времени, когда нет взаимозависимости между работой по обработке элементов, и особенно если узкое место не является локальный ресурс (например, процессор диска). Например, если у меня есть куча URL-адресов для извлечения, каждый из них перейдет в отдельный поток.


4

(Меньше серьезный ответ) Мне нравится использовать потоки в любой ситуации, когда я хочу, чтобы система падала на задницу интересными и неочевидными способами, при этом сохраняя правдоподобную неприкосновенность в отношении того, как я мог пропустить проблему.

Или, по словам Расмуса Лердорфа, «люди недостаточно умны, чтобы писать безопасный код».


1

Я знаю, что большую часть времени я использую потоки, что я на самом деле хочу сделать, это запустить какой-то асинхронный кусок работы - т. Е. Я хочу, чтобы что-то произошло в мифическом «фоне». К сожалению, мышление о потоках на самом деле не является правильным уровнем абстракции для того, чтобы «запускать некоторый кусок работы», потому что вы не помещаете что-то в фоновом режиме. С API-интерфейсом потоков вы создаете еще одно место для запуска материала как родственного исходного потока процесса, и вам нужно беспокоиться о том, какая информация делится между ними, и как и т. Д. Вот почему мне нравится новый API, такой как Cocoa's NSOperation и NSOperationQueue. В случае с этим API запуск нескольких кусков работы - это всего лишь одна строка, и библиотека позаботится о том, следует ли запускать новый поток или использовать старый.


0

Это очень общий вопрос. Я использовал «потоки» для потенциальной блокировки работы потока пользовательского интерфейса, независимо от того, является ли эта работа локальным или сетевым вводом/выводом, или что работа - это интенсивные вычислительные задачи, которые будут «блокироваться» в зависимости от оборудования, на котором оно выполняется ,

Я думаю, что это более интересно спросить о конкретной проблеме или шаблон, который поможет облегчает его и применимость на нитях, т.е .:

  • как это темы актуальны для моделирования вид контроллера?
  • Как или почему я должен снимать работу с нити пользовательского интерфейса до , чтобы пользовательский интерфейс даже не думал блокировки?
  • как может threadpool быть полезен для рекурсивного (сетевого) обход каталога как кто-то еще ссылается на?
  • Должен ли я affinitizing темы для совместного планирования вычислительно интенсивных задач или я должен использовать в ThreadPool и пусть OS превентивно планировать темы, как он считает нужным.

Это довольно широкое пространство, и более ясность, скорее всего, поможет.


2

Нити являются основополагающими для большинства приложений, связанных с вводом-выводом, и для любого достаточно сложного приложения на стороне сервера. Рассмотрите приложение, которое действует как обмен информацией с несколькими источниками данных. Вы должны иметь возможность обрабатывать эту информацию в независимых потоках, в частности, если операции с этими данными подвержены задержкам или требуют значительного количества времени для завершения.

В большинстве случаев потоки часто помогают отделить различные проблемы в приложении. В большинстве случаев отдельные мероприятия по рассылке заинтересованным сторонам не будут хорошо масштабироваться.

Все, кроме простейших приложений, потребуют резьбы в некоторой степени.


0

Я создаю веб-приложения, поэтому весь написанный мной код выполняется в нескольких потоках.


0

Наше приложение представляет собой веб-сервис, поэтому мы создаем поток для каждого запроса. Технически JNI генерирует поток, но код должен быть потокобезопасным. Мы столкнулись с некоторыми интересными (FSVO) проблемами как с Hibernate, так и с нашей инфраструктурой на базе ESB, но по большей части сохраняем вещи в ThreadLocals, а синхронизация по точкам входа в подсистему работает очень хорошо.Мы не пробовали более двух десятков одновременных запросов, поэтому вполне могут быть некоторые условия гонки, которые мы еще не определили, но в целом мы работаем и даем правильные ответы.


0

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


0

Не связанные с занятостью, но я занимаюсь некоторыми работами на Netflix Prize. Мой компьютер имеет 8 ядер и 20 ГБ оперативной памяти ... запуск только 1 потока будет полной потерей, поэтому я обычно запускаю 16 потоков или около того.