Questions tagged [многопоточность]

Многопоточность (multithreading) — метод разделения программ на несколько независимо (и, возможно, параллельно) работающих подзадач — потоков. Используйте эту метку также для вопросов, касающихся потоков выполнения (threads).

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

Для достижения максимальной эффективности и безопасности при программировании с использованием потоков следует уделять особое внимание следующим аспектам:

  • Планирование: все потоки должны иметь возможность эффективно продолжать работу (т.е. нужно избегать взаимных блокировок (deadlock) и "зацикливаний" (livelock)).
  • Атомарнось изменений: данные, изменённые в одном потоке, должны быть прочитаны в адекватном виде в другом.
  • Синхронизация: критические секции должны быть защищены от множественного одновременного доступа, приводящего к порче данных.
3301 questions
13
votes
3 answers

Почему во многопоточных приложениях нужно создавать n+1 рабочих потоков?

Где n - количество физических ядер. Не раз уже встречаю это правило, но никак не могу понять зачем так делать и всегда ли оно эффективнее создания n потоков.
NoTrust
  • 736
5
votes
1 answer

чем отличаются green threads, task-based parallelilism от native threads?

Хочу уточнить некоторые моменты Правильно ли я понимаю, что green threads это "эмуляция" нативных потоков с помощью корутин? например, генераторы в python или javascript это green threads? Правильно ли, что task-based параллелилизм это "эмуляция"…
xperious
  • 2,642
1
vote
0 answers

Распределенное программирование

Я совершенно запутался в видах высоконагружаемых систем. А именно: многопоточные, асинхронные, многопроцессные, неблокирующие и синхронные типы программ. Пожалуйста, опишите кратко каждый из этих типов.
1
vote
0 answers

Измерять временные интервалы непрерывно

Опыт еще не большой. Собрал на УНО 3 датчик кода Морзе (даже несколько вариантов). Хочу сделать автоматический прием кода. Когда-то делал такой аппаратным способом на логике. Для этого надо непрерывно измерять как длительность импульсов, так и…
1
vote
0 answers

Организация CDN с одновременным обновлением файлов

В текущем проекте встала необходимость организации полноценного cdn, разнесенного на несколько серверов. Мною была выбрана модель share-(absolutely)-nothing, которая подразумевает, что cdn-сервера в приниципе не имеют гарантированных точек…
etki
  • 36,151
0
votes
0 answers

Как остановить Thread

Как остановить Thread когда программа находиться в protected void onPause() ? Thread loadAd=new Thread(){ @Override public void run(){ while(!isInterrupted()){ try { …
0
votes
1 answer

Помогите остановить поток метода, который достает информацию о треке из online-stream (радио)

Кто может помочь остановить поток? в метод: void getTrackMetaData(String mLinkToChannel) передается (из StationSwitcher) ссылка на онлайн-стрим (радиостанция). Этот метод каждые 3 сек делает запрос и вытаскивает из потока данные о песне которая…
0
votes
2 answers

Фильтр Гаусса, обработка изображения с помощью процессов и потоков

Доброго времени суток, уважаемые программисты! Есть проблемка. Дано изображение, которое будет обрабатываться фильтром Гаусса, код обработки есть, все прекрасно работает, НО препод для проверки дает картинку 20000x20000 пикселей, и, естественно,…
0
votes
0 answers

Помогите прояснить термины. Многопоточность, конкурентность, т.д

Смотрел видео и читал статьи, но непонятки остались, правильно ли я все понял. поправьте меня пожалуйста, если я не прав. Синхронность - поток блокируется на время, пока выполняется задача, ожидая её выполнения. Асинхронность - поток не блокируется,…
0
votes
0 answers

В чём разница между многопоточностью и мультипроцессностью?

Начинаю изучать параллелизм, но не очень понимаю в чём различие между многопоточностью и мультипроцессностью. В Python есть два класса для этого: threading.Thread, multiprocessing.Process. Видимо первый предназначен для создания потоков, а второй…
-1
votes
1 answer

создание потока

Дано создания потока, который подсчитывает некоторые операции: Thread mThread = new Thread (Count) mThread.Name = & quot; Поток & quot; + I.ToString (); mThread.Start (); Как приостановить выполнение потока на 3 секунды ? a) mThread.Pause (3); b)…